2016-04-04 14 views
0

これは簡単なはずですが、私は困惑しています。別の要素のVisibilityに基づいてDataGridTextColumnのいずれかのVisibilityを設定したいと思います。だから私はこれをしなかった:WPFの設定DataGridTextColumn別の要素に基づく可視性

<StackPanel> 
    <TextBlock Text="This is the text" Name="MyTextBlock" Margin="5"> 
     <TextBlock.Style> 
      <Style TargetType="{x:Type TextBlock}" > 
       <Setter Property="Visibility" Value="Visible" /> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=MyTextBox, Path=Text}" Value="0"> 
         <Setter Property="Visibility" Value="Collapsed" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </TextBlock.Style> 
    </TextBlock> 
    <TextBox Text="2" Name="MyTextBox" /> 
    <DataGrid AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="H1" /> 
      <DataGridTextColumn Header="H2" Visibility="{Binding ElementName=MyTextBlock, Path=Visibility}" /> 
     </DataGrid.Columns> 
    </DataGrid> 
</StackPanel> 

VisibilityMyTextBlockの作品は正しいがDataGridTextColumn H2が常に表示されます。私は間違って何をしていますか?

+1

は、この[スレッド](http://stackoverflow.com/questions/7711275/bind-datagrid-column-visibility-mvvm)を見てみましょう。あなたの問題を解決する必要があります。 – Nebelkraehe

答えて

1

@ルベン溶液が働いた。ここで気に誰が作業コードである場合:

<StackPanel> 
    <StackPanel.Resources> 
     <FrameworkElement x:Key="ProxyElement" 
        DataContext="{Binding ElementName=MyTextBlock}"/> 
    </StackPanel.Resources> 
    <TextBlock Text="This is the text" Name="MyTextBlock" Margin="5"> 
     <TextBlock.Style> 
      <Style TargetType="{x:Type TextBlock}" > 
       <Setter Property="Visibility" Value="Visible" /> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=MyTextBox, Path=Text}" Value="0"> 
         <Setter Property="Visibility" Value="Collapsed" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </TextBlock.Style> 
    </TextBlock> 
    <TextBox Text="0" Name="MyTextBox" /> 
    <ContentControl Visibility="Collapsed" Content="{StaticResource ProxyElement}"/> 
    <DataGrid AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="H1" /> 
      <DataGridTextColumn Header="H2" Visibility="{Binding DataContext.Visibility, Source={StaticResource ProxyElement}}" /> 
     </DataGrid.Columns> 
    </DataGrid> 
</StackPanel> 
関連する問題