爲了設置一個類的常規屬性我創建附加的行爲:附加屬性和綁定
public class LookupHelper
{
public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.RegisterAttached("ItemsSource", typeof(object), typeof(LookupHelper), new UIPropertyMetadata(null, OnItemsSourceChanged));
private static void OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = d as MyControl;
if(control == null)
return;
control.ItemsSource = (IEnumerable)e.NewValue;
}
public static object GetItemsSource(GridColumn column)
{
return column.GetValue(ItemsSourceProperty);
}
public static void SetItemsSource(GridColumn column, object value)
{
column.SetValue(ItemsSourceProperty, value);
}
}
在這裏,MyControl ItemsSource屬性是一個普通的屬性,所以我不能將其綁定Xaml,因此這個附加行爲。
現在,當我使用這個附加屬性使用字符串或對象它的作品和我設置的斷點被擊中,但是當我用綁定標記設置它時,它永遠不會運行。爲什麼這不起作用?
<MyControl ctrl:LookupHelper.ItemsSource="DataSource"/>; //It works
<MyControl ctrl:LookupHelper.ItemsSource="{Binding Path=MyDataSource}"/>; //Does not work
我需要做的是將ItemsSource屬性設置爲綁定指定的值。
你在哪裏設置斷點?什麼方法/線路在您認爲應該調用的時候不被調用? – 2010-02-07 12:27:13
您是否嘗試過使用'Binding'的'Source'屬性而不是'Path'? (你需要指定源爲'StaticResource') – mg007 2010-02-07 13:28:34