2016-08-21 3 views
0

У меня есть проект MVVM WPF. У меня есть DataGrid на странице, привязанной к DataView (из DataTable). Что мне нужно, чтобы использовать MultiDataTrigger для цвета фона из DataGrid строк, которые должны быть переопределены истинным значением ViewModel собственности:DataGrid MultiDataTrigger Привязка к объекту ViewModel

public bool IsAutorized 
{ 
    get { return _isAutorized; } 
    set 
    { 
     _isAutorized = value; 
     OnNotifyPropertyChanged("IsAutorized"); 
    } 
} 

В то время как истинное значение является свойством DataRow. Это то, что у меня есть сейчас, и привязка к свойству ViewModel неверна, когда я установил точку останова на свойство get, это не «пойман».

<Style.Triggers> 
<Trigger Property="DataGridRow.IsSelected" Value="True"> 
    <Setter Property="Background" Value="#CCDAFF"/> 
</Trigger> 

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions>                  
     <Condition Binding="{Binding Path=IsAutorized,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Page}}" Value="True" /> 
     <Condition Binding="{Binding RelativeSource={RelativeSource Self},Path=IsNotSpecific}" Value="True" /> 
    </MultiDataTrigger.Conditions> 
    <Setter Property="Background" Value="#CCF4FF" /> 
</MultiDataTrigger> </Style.Triggers> 

Проблемы с переплетением очень сбивают с толку, я пробовал googleing, но ничего не нашел. Любые идеи горячие, чтобы это сделать?

спасибо.

- EDIT:

"IsNotSpecific" и "IsSelected" являются как Colmns в DataView, который берется из DataTable, строго типизированной таблице DataSet.

Когда строка выбрана, поле/столбец «IsSelected» имеет значение true и определенный цвет является triggerd. Если для свойства View IsAutorized установлено значение true и столбец DataRow (из DataTable) «IsNotSpecific» установлен на «True», должен отображаться другой цвет.

+0

Почему вы пишете RelativeSource? IsAutorized, очевидно, не является свойством страницы. – Clemens

+0

@Clemens IsAutorized является собственностью ViewModel. Я просто пытаюсь все, потому что я не знаю, что будет работать. Как мне добраться до свойств виртуальной машины? –

+0

Пожалуйста, добавьте дополнительную информацию. –

ответ

0
<Condition Binding="{Binding Path=DataContext.IsAutorized,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}" Value="True" /> 

Это условие будет работать, если свойство IsAutorized находится в Main ViewModel.

+0

Спасибо, я проверю его –

+0

Извините, не работает. «IsAutorized» не привязан правильно и не вызван. –

+0

Какая модель имеет свойство IsAutorized и ItemsSource DataGrid? – ParameterX

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