[英]WPF Design-time property
我建立了一个UserControl,它基本上是一个网格,可以在每个末端具有圆角,也可以具有某个多边形。 我有一个Rounded属性,它可以更改圆形边框和多边形的可见性以进行匹配(如果有人设置Rounded =“ True”,则圆形边框可见并且多边形被隐藏,反之亦然。
就像这个问题一样: UserControl Dependency属性设计时间
...它在运行时效果很好,但是我似乎无法在设计时反映出来。 但是,重新启动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));
}
有任何想法吗?
我通过添加更改的事件处理程序,然后更改依赖项属性注册以引用它来使其工作。 我的工作代码:
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);
}
}
也许使用XAML将可见性属性绑定到数据上下文视图模型。 我已经做了各种各样的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.