2016-12-01 16 views
1

我想根据复选框隐藏/显示项目中的TextBox。但只是在这两个控件的项目。在Wpf GridView中如何将一个控件绑定到另一个内部项目

我有BoolToVis转换器。

<ListView Name="lst1" ItemsSource="{Binding Fields}"> 
    <ListView.View> 
     <GridView> 
      <GridView.Columns> 
       <GridViewColumn> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <CheckBox IsChecked="False" Name="chbVis"/> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
        <GridViewColumn.Header> 
         <TextBlock Text="Visibility"></TextBlock> 
        </GridViewColumn.Header> 
       </GridViewColumn> 
       <GridViewColumn> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBox Text="{Binding Path=Name}"/> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
        <GridViewColumn.Header> 
         <TextBlock Text="Field" Visibility="{Binding Path=IsChecked, ElementName=chbVis, Converter={StaticResource BoolToVis}}"></TextBlock> 
        </GridViewColumn.Header> 
       </GridViewColumn> 
      </GridView.Columns> 
     </GridView> 
    </ListView.View> 
</ListView> 

回答

0

我解决了这个问题,通过绑定的复选框创造Field类的属性。

public bool fieldVis; 
    public bool FieldVis 
    { 
     get { return fieldVis; } 
     set 
     { 
      fieldVis= value; 
      NotifyPropertyChanged(); 
     } 
    } 

然后是XAML的样子:

<ListView Name="lst1" ItemsSource="{Binding Fields}"> 
    <ListView.View> 
     <GridView> 
      <GridView.Columns> 
       <GridViewColumn> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <CheckBox IsChecked="{Binding FieldVis}" Name="chbVis"/> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
        <GridViewColumn.Header> 
         <TextBlock Text="Visibility"></TextBlock> 
        </GridViewColumn.Header> 
       </GridViewColumn> 
       <GridViewColumn> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBox Text="{Binding Path=Name}"/> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
        <GridViewColumn.Header> 
         <TextBlock Text="Field" Visibility="{Binding fieldVis, Converter={StaticResource BoolToVis}}"></TextBlock> 
        </GridViewColumn.Header> 
       </GridViewColumn> 
      </GridView.Columns> 
     </GridView> 
    </ListView.View> 
</ListView> 

它是这样工作的魅力。

相关问题