私はこの時点まで私にとってうまくいきましたhereのソリューションから作業しています。 「認識されないか、アクセスできませんされてメンバー 『のSelectedItem』」私はこのコードを入力するとインターフェイスへのWPFデータバインディングがプロパティを見つけることができません
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=(selection:IChartDefinitionViewModel.SelectedItem).HasErrors}" Value="False">
<Setter Property="Background" Value="Transparent"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=(selection:IChartDefinitionViewModel.SelectedItem).HasErrors}" Value="True">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
が、私は警告を取得し、私は今datatrigger以下のXAMLを経由して界面特性への結合を実行しようとしています私は実行しようとすると同様の例外が発生します。唯一のものはがインターフェイスで定義されたメンバーのSelectedItemがある、ある、と私もXAMLからそれにナビゲートすることができますなぜこれが起こっている
public interface IChartDefinitionViewModel : IReactiveSelector<SomeClass>, IMayHaveErrors
{
// stuff
}
public interface IReactiveSelector<T> : // more stuff
{
T SelectedItem { get; set; }
}
は誰が助言することができ、私はこの問題を回避するために何ができるのでしょうか?可能であれば、インターフェイス定義に基づいてこれを管理したり、IChartDefinitionViewModelの実装にデータテンプレートを使用したりしたいと思います。
更新: また、これは動作しませんが、さまざまな理由のために - 私は直接オブジェクトにバインドしようとすると、背景がHasErrorsがtrueからfalseに切り替えますという事実にもかかわらず、変更されません。
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem.HasErrors}" Value="True">
<Setter Property="Background" Value="Transparent"/>
</DataTrigger>
<DataTrigger Binding="{Binding SelectedItem.HasErrors}" Value="False">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
データバインディングは、実装されていないインターフェイスではなく、データコンテキストに対して機能します。ウィンドウまたはグリッドのデータコンテキストを* any *オブジェクトに設定した場合、オブジェクトがそのプロパティを持つ限り、任意のプロパティに名前でバインドできます。インターフェイスは必要ありません。 –
わかりました - 残念ながら、オブジェクトに直接バインドするとバインディングが動作しないように見えます(更新を参照)。 – ket
あなたの編集は、すべての部分が適切な場所にある限り、私にとってはうまくいきます。しかし、あなたの 'DataContext'が混在している可能性はありますか?各行は本当に 'SelectedItem'プロパティを持っていますか? ' –