【问题标题】:WPF XAML - How to bind a DataTrigger to a ComboBox valueWPF XAML - 如何将 DataTrigger 绑定到 ComboBox 值
【发布时间】:2014-05-28 06:26:32
【问题描述】:

我目前有一个 ListView,它接收一个项目并显示一个 ComboBox 和一个 Button。

我想根据 ComboBox 的值等于“BlahBlahBlah”动态显示或隐藏按钮。

目前我的<GridView> 内部是这样的:

<GridViewColumn Header="Property" Width="160">
  <GridViewColumn.CellTemplate>
      <DataTemplate>
         <ComboBox x:Name="PropertyComboBox"
                  ItemsSource="{Binding Path=ArisingPropertyList, Mode=TwoWay}"
                  SelectedValue="{Binding ArisingProperty.PropertyName,
                  UpdateSourceTrigger=PropertyChanged}"
                  SelectedValuePath="PropertyName" Width="140" >
          </ComboBox>
        </DataTemplate>
   </GridViewColumn.CellTemplate>
</GridViewColumn>                                         


<GridViewColumn Width="30" >                                    
  <GridViewColumn.CellTemplate>                                        
     <DataTemplate>
         <Button Content="...">
            <Button.Style>
               <Style TargetType="{x:Type Button}">
                 <Style.Triggers>
                   <DataTrigger Binding="{Binding Path=SelectedValue.PropertyName, 
                    ElementName=PropertyComboBox}" Value="HideButton">
                        <Setter Property="Visibility" Value="BlahBlahBlah" />
                   </DataTrigger>
                 </Style.Triggers>
              </Style>
           </Button.Style>
        </Button>                                                
     </DataTemplate>
   </GridViewColumn.CellTemplate>
 </GridViewColumn>

有人能指出我哪里出错了吗?我得到的只是:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=PropertyComboBox'. BindingExpression:Path=SelectedValue.PropertyName; DataItem=null; target element is 'Button'; target property is 'NoTarget' (type 'Object')

【问题讨论】:

    标签: wpf xaml combobox datatemplate datatrigger


    【解决方案1】:

    您已经将 SelectedValue 属性绑定到源类,因此直接绑定到该属性 而不是 ComboBox。问题是 ComboBox 和 Button 位于不同的 Visual 树中,因此无法使用 ElementName 进行绑定。

    <DataTrigger Binding="{Binding Path=ArisingProperty.PropertyName}"
                 Value="HideButton">
       <Setter Property="Visibility" Value="Collapsed" />
    </DataTrigger>
    

    【讨论】:

      猜你喜欢
      • 2014-09-09
      • 2012-01-09
      • 2013-06-04
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多