【问题标题】:Can't bind to property of one control in a DataTrigger to other control in different grids无法将 DataTrigger 中一个控件的属性绑定到不同网格中的其他控件
【发布时间】:2011-12-23 14:23:06
【问题描述】:

在此示例中我有两个控件,但在实际应用程序中,我有更多控件,具体取决于网格一中标签的属性内容的值(例如),其他一些标签、文本框、文本块和按钮将是在网格 2 中可见或折叠(例如)。

但为了简化我的问题,我将有一个简化的示例...

<Grid Name="gridOne">
    <Label Content="{Binding Collection.Name}" Name="lblCaption"/>
</Grid>

<Grid Name="gridTwo">
    <Label Content="My Label" Visibility="Collapsed">
        <Label.Style>
            <Style TargetType="Label">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=lblCaption, Path=Content}" Value="Employers">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Label.Style>
    </Label>
    <TextBox Text="{Binding EmployerName}" Visibility="Collapsed">
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=lblCaption, Path=Content}" Value="Employers">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>
</Grid>

我知道如果我将属性 Visibility 设置为 Collapsed 以控制默认值,这也不起作用,但我有很多集合,我不认为每个集合都有一个 DataTrigger 是实现它的好方法。无论如何,当在不同的网格中绑定控件和其他以一种好的方式处理属性 Visibility 时,就会出现一个问题。

提前致谢!

【问题讨论】:

    标签: wpf xaml data-binding binding wpf-controls


    【解决方案1】:

    本地值在样式触发器上采用precedence。将样式内的可见性初始化移动为:

    <Label Content="My Label">
      <Label.Style>                    
        <Style TargetType="Label">
          <Setter Property="Visibility" Value="Collapsed"/>
          <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=lblCaption, Path=Content}" Value="Employers">
              <Setter Property="Visibility" Value="Visible"/>
            </DataTrigger>
          </Style.Triggers>
        </Style>
      </Label.Style>
    </Label>
    

    【讨论】:

      猜你喜欢
      • 2011-01-10
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      相关资源
      最近更新 更多