0

私はまだWPFで血まみれの緑であり、その背後にある概念をまだ完全には理解していません。次の問題があります。

前提条件に応じて、データグリッドにトリガーを設定したい。

例:

私のコードビハインドには、文字列変数があります。それを呼び出しましょうvariableString。ここで、の値に応じて、variableStringXAMLで次のように定義したデータグリッド内のトリガーを有効/無効にします。

if(variableString == "a") 

それから

XAML

<DataGrid AutoGenerateColumns="False" Margin="5,5,0,75" Name="dataGrid1" ItemsSource="Binding}">
  <DataGrid.ItemContainerStyle>
        <Style TargetType="DataGridRow">
             <Style.Triggers>
                  <DataTrigger Binding="{Binding Path=SomeColumnName}" Value="someValue">
                  <Setter Property="Background" Value="White"/>
                  <DataTrigger Binding="{Binding Path=SomeColumName}" Value="someOtherValue">
                  <Setter Property="Background" Value="Red"/>
             </Style.Triggers>
        </Style>
   </DataGrid.ItemContainerStyle>

それ以外の場合、

if(variableString == "b")

それから

Do Nothing`

文字列をデータグリッドのデータコンテキストにバインドしようとしましたが、データベースへのバインドが削除されるため、かなり逆効果でした。

誰かがここで私を助けてくれますか?例、正しい方向へのプッシュなど...

私はWPFが提供するオプションが本当に好きですが、WinFormsで非常に扱いやすい基本的なものが、WPFに夢中になっています。

ありがとう

4

1 に答える 1

1

複数の値に基づいてトリガーを作成できるMultiDataTriggerが必要だと思います

  <MultiDataTrigger>
    <MultiDataTrigger.Conditions>
      <Condition Binding="{Binding Path=SomeColumnName}" Value="someValue" />
      <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=variableString}" Value="A" />
    </MultiDataTrigger.Conditions>
    <Setter Property="Background" Value="White" />
  </MultiDataTrigger>

コードビハインドで文字列を見つけるには、おそらく何らかのRelativeSourceバインディングを使用して、そのプロパティを含むクラスを見つける必要があります。私の例では、クラスに呼び出さvariableStringれたパブリックプロパティがあると想定していますWindow

于 2012-05-03T14:02:07.133 に答える