WPF DataGrid: ресурс на строку? - PullRequest
3 голосов
/ 22 апреля 2010

Есть ли способ xamly установить StaticResource для каждой строки в DataGrid, обращаясь к нему из всех столбцов?


UPDATE
Моя цель состоит в том, чтобы иметь 3 столбца ComboBox, в то время как только последний фактически связан с элементом строк.
Например, DataGrid представляет список элементов. У меня есть Category-> Vendor-> Style-> Finish ComboBox, но они предназначены только для помощи при навигации, на самом деле класс Item имеет только отношение «Finish». Поэтому, если бы в каждой строке мог быть StaticResource, я мог бы установить реквизиты ComSBox ItemsSource & IsSynchronizedWithCurrentItem, и это сработало бы автоматически.

Большое спасибо.

Ответы [ 4 ]

1 голос
/ 22 апреля 2010

Технически, я думаю, вы могли бы, потому что строка находится в визуальном дереве. Но чего вы пытаетесь достичь? Возможно, есть лучший способ.

0 голосов
/ 16 января 2011

То, что я сделал и решил свою проблему (без гарантий того, является ли это правильным способом), я использую UserControl в качестве содержимого DataTemplate, ресурс которого объявлен в UserControl, затем он каждый раз инициализируется.

Еще одна вещь, которую я не пробовал, - установить атрибут x:Shared на false, что, как я считаю, должно помочь в решении проблемы.

0 голосов
/ 22 апреля 2010

Вы, безусловно, можете установить его на уровне DataGrid следующим образом:

xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"

<data:DataGrid x:Name="..."  ItemsSource="{Binding ...}" >
    <data:DataGrid.Resources>
    </data:DataGrid.Resources>
</data:DataGrid>

Я бы предположил, что вы можете установить его на уровне строки, если определите шаблон строки?

0 голосов
/ 22 апреля 2010

Не могли бы вы подробнее рассказать о том, чего вы пытаетесь достичь?

Я думаю, что проще иметь один staticResource, который представляет коллекцию (см. Тип ObjectDataProvider), а затем привязать свойство ItemSrid ItemSource к нему в XAML.

...