Пользовательская привязка объектов WPF к списку (T) на основе запроса - PullRequest
0 голосов
/ 04 января 2010

В окне моего приложения WPF у меня есть несколько сотен объектов, основанных на пользовательском элементе управления. Они отличаются друг от друга только по имени:

...
<MyNamespace:MyCustControl x:Name="x4y3" />
<MyNamespace:MyCustControl x:Name="x4y4" />
<MyNamespace:MyCustControl x:Name="x4y5" />
<MyNamespace:MyCustControl x:Name="x4y6" />
<MyNamespace:MyCustControl x:Name="x4y7" />
...

Пользовательский элемент управления и, следовательно, эти объекты имеют некоторое количество свойств. Значения этих свойств должны обновляться из списка (T) (или другого типа универсальной коллекции), который заполняется из базы данных SQL Server с использованием запроса LINQ to SQL.

Чтобы определить, какая запись соответствует каждому объекту, у нас в коллекции есть поле с именами этих объектов: "x4y3", "x4y4", "x4y5", ... и т. Д. на.

Мой вопрос:

Можно ли установить привязку данных общего числа этих объектов к этой общей коллекции на основе условия равенства имени каждого объекта и значения соответствующего поля в общей коллекции?

1 Ответ

1 голос
/ 04 января 2010

Это вполне возможно при использовании ItemControl в сочетании с DataTemplate. Вместо создания явного списка вашего пользовательского элемента управления создайте ItemsControl и привяжите его свойство ItemsSource к вашей коллекции. Установите ItemTemplate на DataTemplate, содержащий ваш пользовательский элемент управления.

Пример:

<Window.Resources>
    <DataTemplate x:Key="MyTemplate">
        <MyNamespace:MyCustControl/>
    </DataTemplate>
</Window.Resources>
...
    <ItemsControl ItemsSource="{Binding MyCollection}" 
                  ItemTemplate="{StaticResource MyTemplate}"/>

Чтобы отобразить значения из вашего объекта данных, просто свяжите элементы в вашем пользовательском элементе управления, поскольку каждый из них будет иметь отдельный объект данных в качестве DataContext.

...