2016-08-21 8 views
0

私はMVVM WPFプロジェクトでビューを持っています。 DataGridは、DataTableのDataViewにバインドされたページにあります。真の値がのDataRowの財産であるのに対しDataGrid MultiDataTriggerはViewModelプロパティにバインドします

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

:私は必要なのViewModelにプロパティの真の値によって再定義する必要がありますDataGridの行の背景色、のためにMultiDataTriggerを使用することです。これは私が今持っているもので、ViewModelプロパティへのバインディングは正しくありません。プロパティにブレークポイントを設定すると、 "catch"されません。

<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あり、それはデータテーブル、厳密に型指定されたDataSetテーブルから取り出されます。

行を選択すると、フィールド/列「IsSelected」がtrueに設定され、特定の色がトリガされます。 Viewプロパティ "IsAutorized"がtrueに設定され、(DataTableの)DataRow "IsNotSpecific"列が "True"に設定されている場合、別の色が表示されるはずです。

+0

なぜRelativeSourceを書いたのですか? IsAutorizedは明らかにPageの財産ではありません。 – Clemens

+0

@Clemens IsAutizedは、ViewModelのプロパティです。私は何がうまくいくのかわからないので、すべてを試してみるだけです。 VMプロパティにはどうすれば到達できますか? –

+0

詳細を入力してください。 –

答えて

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

この条件は、IsAutorizedプロパティがメインViewModelにある場合に機能します。

+0

ありがとう、私はそれをテストします –

+0

申し訳ありませんが、動作しません。 "IsAutorized"は正しくバインドされておらず、呼び出されません。 –

+0

"IsAutorized"プロパティとDataGridのItemsSourceを持つviewmodelはどれですか? – ParameterX

関連する問題