Привязка к свойству из DataModel к его родительскому ViewModel? - PullRequest
1 голос
/ 10 февраля 2011

Я использую шаблон M-V-VM. У меня есть ViewModel и ObservableCollection DataModels. Список DataModels привязан к данным к DataGrid.

Когда сетка отображается, я бы хотел, чтобы одно из полей было ComboBox (скажем, список имен строк).

Этот список имен строк является общим списком, который применяется ко всем строкам (т. Е. DataModels).

Есть ли способ привязать свойство строки уровня поля к родительскому ViewModel?

Одно из возможных решений, которое я бы хотел избежать, это: Имейте get-свойство в DataModel, которое по существу возвращает свойство ViewModel (список имен строк).

1 Ответ

0 голосов
/ 10 февраля 2011

вы можете сделать это со статическим ресурсом. Например. определите свой статический ресурс в xaml

<UserControl.Resources>
   <mynamespace:MyViewModel x:Key="MyViewModel" />
</UserControl.Resources>

Теперь вы можете ссылаться на этот ресурс в своем пользовательском элементе управления:

<Controls::DataGrid DataContext="{StaticResource MyViewModel}" ItemSource="{Binding MyItems}" ...
  <Controls:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <ComboBox ItemsSource="{Binding MyItems, Source={StaticResource MyViewModel}" DisplayMemberPath="MyString" /> <!-- This does the job with the combo box and the strings -->
    </DataTemplate>
  </Controls:DataGridTemplateColumn.CellTemplate>
</Controls:DataGrid>

Надеюсь, это поможет,

BR

TJ

...