Я создаю присоединенное поведение для того, чтобы установить регулярное свойство класса:Attached Property и Binding
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);
}
}
Здесь ItemsSource собственности на MyControl является обычным свойством, поэтому я не могу связать его в Xaml, следовательно, это приложенное поведение.
Теперь, когда я использую это вложенное свойство, используя строку или объекты, которые он работает, и точка останова, которую я установил, попадает, но когда я устанавливаю ее с помощью разметки Binding, она никогда не запускается. Почему это не работает?
<MyControl ctrl:LookupHelper.ItemsSource="DataSource"/>; //It works
<MyControl ctrl:LookupHelper.ItemsSource="{Binding Path=MyDataSource}"/>; //Does not work
Что мне нужно сделать, это установить свойство ItemsSource к значению, указанному в Binding.
Где вы устанавливаете точку останова? Какой метод/строка не вызывается, пока вы думаете, что она должна? –
Вы пытались использовать свойство 'Source'' Binding' вместо 'Path'? (Вам нужно указать источник как 'StaticResource') – mg007