[英]Attached property call back doesn't work with default value in wpf VS2012
我正在嘗試為組合框編寫一個簡單的附加屬性,該屬性通過回調更改組合框的數據源。我的問題是,回調函數對defualt值無效,這是我的代碼
附屬財產階級
namespace WpfApplication2
{
public enum Types { Employee, Position, Task }
public class ComboBoxAttached:DependencyObject
{
public static readonly DependencyProperty TypeOfProperty =
DependencyProperty.RegisterAttached(
"TypeOf",
typeof(Types),
typeof(ComboBoxAttached),
new PropertyMetadata(Types.Position, OnTypesChanged));
public static void SetTypeOf(DependencyObject d, Types use)
{
d.SetValue(TypeOfProperty, use);
}
private static void OnTypesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
ComboBox cb = d as ComboBox;
// MessageBox.Show(((Types)e.NewValue).ToString());
switch ((Types) e.NewValue)
{
case Types.Employee:
cb.ItemsSource = SourceData.Employee;
break;
case Types.Position:
cb.ItemsSource = SourceData.Position;
break;
case Types.Task:
cb.ItemsSource = SourceData.Task;
break;
}
}
}
}
數據源類別
namespace WpfApplication2
{
public static class SourceData
{
public static List<string> Employee=new List<string>(){ "Manager","HR","CEO","CFO"};
public static List<string> Position = new List<string>() { "Right", "Left", "Forward", "Backward" };
public static List<string> Task = new List<string>() { "Assessment", "Measurement", "Consult", "Other" };
}
}
XAML
<ComboBox MyProp:ComboBoxAttached.TypeOf="Position" Margin="5" />
僅在屬性實際更改時才調用回調。 最初,它具有默認值,並且根據設計,該回調將不會被調用。 這樣您要么需要手動調用它,要么可以使用Types?
的屬性Types?
(使其變為可為空)手將默認值設為null
:
public static readonly DependencyProperty TypeOfProperty =
DependencyProperty.RegisterAttached(
"TypeOf",
typeof(Types?),
typeof(ComboBoxAttached),
new PropertyMetadata(null, OnTypesChanged));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.