[英]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.