У меня есть коллекция + ее структура:
public class FunctionListBindStructure : AttributeBase
{
public FunctionListBindStructure() : base(true) { }
//this represents one row of the collection
public MyFunction Function { get; set; }
public string Name { get; set; }
}
public class FunctionListBind : AttributeListBase
{
//this represents
public ObservableCollection<FunctionListBindStructure> FunctionList { get; set; }
public FunctionListBind()
: base(true)
{
FunctionList = new ObservableCollection<FunctionListBindStructure>();
}
public override IList GetList()
{
return FunctionList as IList;
}
}
Этот класс использует платформу, которая генерирует свойство зависимости для свойства CLR Function.DisplayName как "FunctionDisplayNameProperty".
В моем примере я привязываю эту коллекцию к ListBox
ListBox ItemsSource="{Binding MyModel.FunctionListBind.FunctionList}" Height="52" HorizontalAlignment="Left" Margin="136,157,0,0" Name="listBox1" VerticalAlignment="Top" Width="130" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding FunctionDisplayNameProperty, Mode=TwoWay}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Проблема теперь в том, что в списке отображается только последний элемент коллекции ... предыдущие элементы отображаются только с пробелом; хотя я довольно уверен (через отладчик), что свойства зависимостей (когда они зарегистрированы и их набор значений) предыдущих строк должны иметь не начальные значения. Если я ссылаюсь непосредственно на соответствующее свойство CLR (Function.DisplayName), все работает нормально.
Мой вопрос: я делаю здесь ошибку дизайна? Свойства зависимости не должны использоваться как тип строки? Я использую тот же шаблон для не-коллекции, и там это работает. По этой же причине я хочу использовать тот же подход для коллекций (я могу использовать 90% существующей кодовой строки для генерации и установки свойств зависимости).
Спасибо за любые подсказки также о том, как (если не ошибка проектирования) для отладки привязки свойства зависимости.