在我的特定情况下,我想绑定到TextBox的IsReadOnly属性来设置Button的Content属性?它们都是同一个StackPanel的一部分。
我尝试过使用DataTrigger和TextBox的ElementName绑定,以及使用TextBox名称作为SourceName的触发器。
有什么想法吗?
答案 0 :(得分:74)
您需要将触发器指定为样式的一部分 - Button上的Triggers集合本身只能包含事件触发器。考虑到这一点,DataTrigger工作正常。但是,有一个问题:Trigger Setter的值不会覆盖本地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>
答案 1 :(得分:8)
你试过这个:
<StackPanel x:Name="LayoutRoot">
<Button Width="75" Content="{Binding IsReadOnly, ElementName=textBox, Mode=Default}" />
<TextBox x:Name="textBox" VerticalAlignment="Top" Text="TextBox" />
</StackPanel>
...