Silverlight: привязка данных: использование свойств зависимостей в строке коллекции - PullRequest
0 голосов
/ 25 мая 2011

У меня есть коллекция + ее структура:

 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% существующей кодовой строки для генерации и установки свойств зависимости).

Спасибо за любые подсказки также о том, как (если не ошибка проектирования) для отладки привязки свойства зависимости.

1 Ответ

0 голосов
/ 26 мая 2011

Это была просто ошибка моей системы кодирования. Я определил свойства зависимости как атрибут экземпляра, а не как статический. Теперь все отлично работает.

...