2009-05-13 6 views
0

私はButtonDataTriggerを適用しようとしており、現在選択されているTreeViewのプロパティに依存しています。考え方は、選択したアイテムのプロパティに応じて、Buttonのテキストを変更したいということです。バインディングが別のコントロールから来た場合、そのボタンにDataTriggerを適用しますか?

<Button x:Name="m_AddObject" Margin="192.708,0.909,6,6.363" Click="AddObject_Click" > 
    <DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Removable}" Value="true"> 
     <Setter TargetName="m_AddObject" Property="Content" Value="Remove" /> 
    </DataTrigger> 
</Button> 

しかし、私はそれをコンパイルすることができません:私はこのようになります持っているもの

。 Setterは、 "Content"が有効なタイプの名前を持っていないので無効ですが、 "Button.Content"に変更すると "オブジェクトのインスタンスがオブジェクトのインスタンスに設定されていません"という文句を言います。

私も試してみました:

<Setter TargetName="m_AddObject.Content" Value="Remove" /> 

それはコンパイルが、それはどちらか動作しませんでした。

私は困惑しています。

アイデア?

ありがとうございます!

答えて

1

DataTriggersは、ボタンのスタイルで定義する必要があります。上記でやってみようとしているのは、DataTriggersを( "OK"の代わりに)ボタンの "ラベル"(WPFが示すように "Content")として使用することです。

これはアドホックなので、それは完全に正確ではないかもしれないが、それはあなたが望むものに近いです:

<Button x:Name="m_AddObject" 
     Margin="192.708,0.909,6,6.363" 
     Click="AddObject_Click"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Removable}" Value="True"> 
        <Setter Property="Content" Value="Remove" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
関連する問題