2016-08-21 101 views
0

我在MVVM WPF項目中有一個View。我有一個頁面中的DataGrid綁定到DataView(從DataTable)。我需要的是用MultiDataTrigger爲DataGrid行的背景顏色,應該由視圖模型屬性的真值進行重新定義:DataGrid MultiDataTrigger綁定到ViewModel屬性

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

而True值是DataRow中的一個屬性。這就是我現在擁有的,並且綁定到ViewModel屬性是不正確的,當我在屬性上設置一個斷點時,它不會被「捕獲」。

<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它,但什麼都沒發現。任何想法很難做到這一點?

謝謝。

- 編輯:

「IsNotSpecific」 和 「IsSelected」 都是Colmns的數據視圖,即從數據表中,一個強類型DataSet的表中獲取。

當選中某行時,字段/列「IsSelected」設置爲true,並觸發某種顏色。當View屬性「IsAutorized」設置爲true並且DataRow(來自DataTable)「IsNotSpecific」列設置爲「True」時,應該顯示不同的顏色。

+0

你爲什麼寫這個RelativeSource? IsAutorized顯然不是Page的財產。 – Clemens

+0

@Clemens IsAutorized是ViewModel的一個屬性。我只是嘗試一切,因爲我不知道會發揮什麼作用。我如何到達VM屬性? –

+0

請增加更多信息。 –

回答

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

如果IsAutorized屬性位於Main ViewModel中,則此條件將有效。

+0

謝謝,我會測試它 –

+0

對不起,無法正常工作。 「IsAutorized」沒有正確綁定並且未被調用。 –

+0

哪個viewmodel具有DataGrid的「IsAutorized」屬性和ItemsSource? – ParameterX

相關問題