У меня есть ListBox в WPF, где я устанавливаю свойство ItemsSource в коде в список «Список»
Когда я сейчас запускаю Программу, я получаю Список с моим именем класса с таким же количеством записей, что и Список.содержит.Это правильно.
Теперь я защищаю следующую Datatemplate:
<DataTemplate>
<NetworkEditor:NetworkEditor DisplayNetwork="{Binding}"></NetworkEditor:NetworkEditor>
</DataTemplate>
Но для DependencyPropery «DisplayNetwork» всегда передается «null» (я проверял это с помощью DebugValueConverter).
Любые идеи?
Xaml из списка:
<ListBox Name="myLst" Grid.Row="3" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" >
<ListBox.ItemTemplate>
<DataTemplate>
<NetworkEditor:NetworkEditor DisplayNetwork="{Binding}"></NetworkEditor:NetworkEditor>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Реализация свойства в моем UserControl:
public Network DisplayNetwork
{
get { return (Network)GetValue(DisplayNetworkProperty); }
set { SetValue(DisplayNetworkProperty, value); }
}
// Using a DependencyProperty as the backing store for DisplayNetwork. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DisplayNetworkProperty =
DependencyProperty.Register("DisplayNetwork", typeof(Network), typeof(NetworkEditor), new FrameworkPropertyMetadata(null, OnDisplayNetworkChanged, CoerceValueCallback));
private static Object CoerceValueCallback(DependencyObject d,Object baseValue)
{
return baseValue;
}
OnDisplayNetworkChanged никогда не вызывается, потому чтоЗначение null всегда устанавливается в качестве значения!
Источник данных моего ListBox:
myLst.ItemsSource = ((S7FunctionBlock) myBlock).Networks;
, где Networks - это список, а когда я отлаживаю эту строку, он содержит данные!