我已经构建了一个UserControl,它基本上是一个网格,可以在每个末端具有圆角,也可以具有某个多边形。我有一个Rounded属性,可更改圆形边框和多边形的可见性以进行匹配(如果有人设置Rounded =“ True”,则圆形边框可见,多边形被隐藏,反之亦然。
就像这个问题一样: UserControl Dependency Property design time
...它在运行时效果很好,但是我似乎无法在设计时反映出来。但是,重新启动VS,清理解决方案,重新构建,更改构建目标等-这些步骤似乎没有什么不同。 我的课很基础:
public partial class MyBox : UserControl
{
public MyBox()
{
InitializeComponent();
}
public bool Rounded
{
get { return (bool)GetValue(RoundedProperty); }
set
{
SetValue(RoundedProperty, value);
this.edgeRounded.Visibility = (value ? Visibility.Visible : Visibility.Hidden);
this.edgePolygon.Visibility = (value ? Visibility.Hidden : Visibility.Visible);
}
}
public static readonly DependencyProperty RoundedProperty = DependencyProperty.Register("Rounded", typeof(bool), typeof(MyBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
}
有什么想法吗?
答案 0 :(得分:2)
我通过添加更改的事件处理程序,然后更改依赖项属性注册以引用它来使其工作。我的工作代码:
public partial class MyBox : UserControl
{
public MyBox()
{
InitializeComponent();
}
public bool Rounded
{
get { return (bool)GetValue(RoundedProperty); }
set { SetValue(RoundedProperty, value); }
}
public static readonly DependencyProperty RoundedProperty = DependencyProperty.Register("Rounded", typeof(bool), typeof(MyBox), new PropertyMetadata(false, RoundedChanged));
private static void RoundedChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
bool value = (bool)e.NewValue;
MyBox thisMyBox = (MyBox)sender;
// Hide/show the edges
thisMyBox.edgeRounded.Visibility = (value ? Visibility.Visible : Visibility.Hidden);
thisMyBox.edgePolygon.Visibility = (value ? Visibility.Hidden : Visibility.Visible);
}
}
答案 1 :(得分:0)
也许使用XAML将可见性属性绑定到数据上下文视图模型。 我已经做了各种各样的事情。