2013-11-28 2 views
2

Я хочу связать логические значения, список объектов и значения перечисления с выпадающим списком. В зависимости от столбца datagrid появляется диалог, и я загружаю список объектов (Object1.Name .... ObjectN.Name - это имена и ObjectId1..ObjectIdN - это идентификаторы), я загружаю список EnumValue (EnumItem1..EnumItemN являются именами, EnumValue1 .. EnumValueN являются идентификаторами) или логическими (Да/Нет - это имена и 0/1 идентификаторы).WPF Различные ItemsSource для Combobox

Как я могу это сделать? Нужно ли мне реализовать класс переноса в моей ViewModel для моего списка? (этот класс wrap получит список объектов, список yes/no для boolean, список enumvalues).

+0

Какой ваш выбор режима? - это строка или ячейка? –

+0

Привет, eran, это режим ячейки. – MrScf

+0

http://stackoverflow.com/questions/19225568/wpf-datagrid-get-selected-cell-value –

ответ

2
<Style Target={x:Type ComboBox}> 
    <Style.Triggers> 
     <DataTrigger Binding="{Path=RowData.Row.PropertyToBeChecked}" Value="Value1"> 
      <Setter Property="DataSource" Value="{Binding Path=ListCorrespondingToValue1}"/> 
     </DataTrigger> 
     <DataTrigger Binding="{Path=RowData.Row.PropertyToBeChecked}" Value="Value2"> 
      <Setter Property="DataSource" Value="{Binding Path=ListCorrespondingToValue2}"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
1

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

<Style Target={x:Type ComboBox}> 

+0

Прохладный, спасибо. Но это означает, что у меня должно быть одно свойство в ViewModel для определенного списка. Разве не лучше иметь одно свойство, которое всегда содержит правильные значения? – MrScf

+0

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

+0

И да, вам нужно будет отбросить два разных свойства в вашем представлении списка моделей и список или вы просто можете добавить да или нет в своем перечислении и в зависимости от вашего столбца обновить datagrid. DataSource с linq как list = list.Where (l => l.val! = enum.yes && l.val! = enum.No) –

Смежные вопросы