2016-09-26 4 views

答えて

0

はい、MultiDataTriggerを使用してください。

<Window.Resources> 
    <c:Places x:Key="PlacesData"/> 

    <Style TargetType="ListBoxItem"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=State}" Value="WA"> 
     <Setter Property="Foreground" Value="Red" /> 
     </DataTrigger>  
     <MultiDataTrigger> 
     <MultiDataTrigger.Conditions> 
      <Condition Binding="{Binding Path=Name}" Value="Portland" /> 
      <Condition Binding="{Binding Path=State}" Value="OR" /> 
     </MultiDataTrigger.Conditions> 
     <Setter Property="Background" Value="Cyan" /> 
     </MultiDataTrigger> 
    </Style.Triggers> 
    </Style> 

    <DataTemplate DataType="{x:Type c:Place}"> 
    <Canvas Width="160" Height="20"> 
     <TextBlock FontSize="12" 
      Width="130" Canvas.Left="0" Text="{Binding Path=Name}"/> 
     <TextBlock FontSize="12" Width="30" 
       Canvas.Left="130" Text="{Binding Path=State}"/> 
    </Canvas> 
    </DataTemplate> 
</Window.Resources> 

<StackPanel> 
    <TextBlock FontSize="18" Margin="5" FontWeight="Bold" 
    HorizontalAlignment="Center">Data Trigger Sample</TextBlock> 
    <ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew" 
    ItemsSource="{Binding Source={StaticResource PlacesData}}"/> 
</StackPanel> 

EDIT:ここでは、複数のプロパティでこれを使用する方法についてのリンクMSDNのドキュメントからの例です今までにないきれいな解決策は、しかし、あなたは基本的にsomething like this.を行うプロパティのいずれかを変更するたびに実行するためにMultiDataTriggerを使用することができます。次に、単純なヌルチェックのためにコンバータを使用します(または、おそらくあなたのケースではtrueを返すことができます)。そうすれば、MultiDataTriggerの値は特定の値ではなく真になります。

+0

感謝を聞く作るためにあなたのXAML要素のバインディング式で「UpdateSourceTrigger」を定義しますが、私は任意の値に火トリガはあなたの例では、変更されていたいですトリガは、条件が真である場合に起動されます。 –

+0

Hmmm MultiTriggerとMultiDataTriggerは、参照値の等しい比較を行うため、特定の値が必要です。あなたが解決しようとしていることを具体的に教えてもらえますか?値を計算するために複数のプロパティを使用していますか? – rmc00

+0

はい、1つまたは複数のテキストボックスが変更されたときにリストボックスを設定するために、ビューモデルで1つのコマンドを起動する必要があります。 –

0

独自のイベントを作成し、必要に応じて起動します。 (How can I make my own event in C#?

その後、彼らはあなたの新しく定義されたイベントに

+0

ありがとうございます。これは私の問題を解決しますが、私は解決策 "Pretty" –

関連する問題