2016-12-01 17 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> 

它是這樣工作的魅力。

相關問題