在setter中使用bound属性

时间:2015-08-10 08:02:08

标签: c# wpf

我有一个按钮,使用StackPanel和三个TextBlocks显示三行文本。

每个文本块的可见性使用相同的绑定,如下所示:

<TextBlock Name="bF12Tl1" 
           Text="Line1"
           Visibility="{Binding F12ShowText}"
           HorizontalAlignment="Center"/>

到目前为止,我已经能够在触发器中使用绑定,但在Setters中却没有。 是否可以使用此绑定来更改Setter中所有三个TextBlock的可见性,如下所示?

<Trigger Property="IsEnabled" Value="False">
    <Setter Property="BorderThickness" Value="4"/>
    <Setter Property="BorderBrush" Value="#737373"/>
    <Setter Property="Background" Value="Gray"/>
    //(Use DataBinding F12ShowText to change visibility here)
</Trigger>

谢谢

2 个答案:

答案 0 :(得分:0)

这样简单可能会有所帮助

 <Button x:Name="MyButton"/>
    <Style  TargetType=TextBlock>
      <Style.Triggers>
         <DataTrigger Binding="{Binding ElementName= MyButton, Path=IsEnabled}" Value="false>
            <Setter Property="Visibility" Value="Hidden/>
         </DataTrigger>
      </Style.Triggers>
    </Style>

请注意我在记事本中写了它,因为我没有VS运行atm,所以可能有&#34;或支架在这里或那里丢失。但我不明白为什么这不起作用的原因。

答案 1 :(得分:0)

它比我认为的要简单得多,我根本不需要使用DataBinding。

使用每个TextBlock的名称以及&#34; TargetName&#34;允许我轻松更改与按钮没有直接关系的项目的属性。

<Trigger Property="IsEnabled" Value="False">
        <Setter Property="BorderThickness" Value="4"/>
        <Setter Property="BorderBrush" Value="#737373"/>
        <Setter Property="Background" Value="Gray"/>
        <Setter TargetName="bF12Tl1" Property="Visibility" Value="Hidden"/>
        <Setter TargetName="bF12Tl2" Property="Visibility" Value="Hidden"/>
        <Setter TargetName="bF12Tl3" Property="Visibility" Value="Hidden"/>
</Trigger>

如果有人认为这是一个好的解决方案,请告诉我。