私の特定のケースでは、TextBoxのIsReadOnlyプロパティにバインドして、ButtonのContentプロパティを設定しますか?どちらも同じStackPanelの一部です。
TextBoxのElementNameにバインドするDataTriggerと、SourceNameとしてTextBox名を使用するトリガーを使用して、これを実行しようとしました。
何かご意見は?
スタイルの一部としてトリガーを指定する必要があります。ボタン自体のトリガーコレクションには、イベントトリガーのみを含めることができます。それを念頭に置いて、DataTriggerは正常に動作します。ただし、しわがあります。トリガーセッターの値は、ローカルのContentプロパティを上書きしません。そのため、スタイルのデフォルトのコンテンツも設定する必要があります。外観は次のとおりです。
<Button> <!-- Note no content set directly on button -->
<Button.Style>
<Style TargetType="Button">
<Setter Property="Content" Value="You may write!!!" /> <!-- Here is the 'normal' content -->
<Style.Triggers>
<!-- Here is how we bind to another control's property -->
<DataTrigger Binding="{Binding IsReadOnly, ElementName=textBox}" Value="True">
<Setter Property="Content" Value="NO NO NO" /> <!-- Here is the 'override' content -->
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
これを試しましたか:
<StackPanel x:Name="LayoutRoot">
<Button Width="75" Content="{Binding IsReadOnly, ElementName=textBox, Mode=Default}" />
<TextBox x:Name="textBox" VerticalAlignment="Top" Text="TextBox" />
</StackPanel>
?