在setter中使用绑定属性

本文关键字:绑定 属性 setter | 更新日期: 2023-09-27 18:07:10

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

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

<TextBlock Name="bF12Tl1" 
           Text="Line1"
           Visibility="{Binding F12ShowText}"
           HorizontalAlignment="Center"/>
到目前为止,我已经能够在触发器中使用绑定,但不能在setter中使用绑定。是否有可能使用此绑定来改变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>

谢谢

在setter中使用绑定属性

这比我想象的要简单得多,我根本不需要使用DataBinding。

使用每个TextBlock的名称和"TargetName"可以让我很容易地改变与按钮不直接相关的项目的属性。

<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>

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

这样简单的事情可能会有帮助

 <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,所以可能有"或括号遗漏这里或那里。但我看不出这有什么不行的理由。