2016-05-18 4 views
0

У меня есть сетки с именем comSection, который я хочу, чтобы установить видимость с ToggleButton:Изменения сетка видимость собственности с ToggleButton в чистом XAML

непроверенных = разрушился

проверил = видимый

Сетки и ToggleButton находятся внутри DataTemplate и ListBox

у меня было много проблем, пытаясь получить доступ к видимости в C#:

comSection.Visibility = System.Windows.Visibility.Collapsed; //can't access this way 

Использование PropertyChangedEventHandler я не могу заставить его работать

Так я интересно, если это возможно, чтобы связать видимость в чистом XAML. Возможно, используя BooleanToVisibilityConverter.


EDIT Мой XAML

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="71*"/> 
     <ColumnDefinition Width="580*"/> 
    </Grid.ColumnDefinitions> 
    <Grid x:Name="IssueList" Grid.Column="1"> 
     <ListBox x:Name="listBox" MouseDoubleClick="ListBox_MouseDoubleClick" BorderThickness="0,0,0,0" 
      ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalContentAlignment="Stretch" 
      ItemsSource="{Binding Issues, Mode=OneWay}" Grid.Column="1" > 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Grid x:Name="grd"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="100"/> 
          <ColumnDefinition Width="auto"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="auto"/> 
          <RowDefinition Height="*"/> 
          <RowDefinition Height="*"/> 
         </Grid.RowDefinitions> 

         <!-- Other code here --> 


         <!-- The ToggleButton --> 
         <ToggleButton x:Name="comSecButton" Width="10" Height="10" Click="comSection.Visibility = Collapsed" Background="Transparent" BorderThickness="0" 
           Grid.Column="2" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Bottom" 
           Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Path=IsSelected, Converter={StaticResource booleanVisibleConverter}}"> 

         </ToggleButton> 

         <!-- The Grid I want to show/hide --> 
         <Grid x:Name="comSection" Visibility="{Binding comSec_Click, Converter={StaticResource booleanVisibleConverter}}" Grid.Column="2" Grid.Row="2"> 

          <TextBox x:Name="comment" HorizontalAlignment="Right" 
          Height="23" TextWrapping="Wrap" VerticalAlignment="Bottom" Width="148" /> 
         </Grid> 

        </Grid> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
+0

Если вы разместите код XAML и код, то кто-то должен быть в состоянии помочь вы. Существует несколько способов сделать это, это должно быть просто. Конвертер, о котором вы говорили, также должен работать. – adminSoftDK

ответ

0

Используйте DataTrigger в стиле для Грид:

<Grid x:Name="comSection" Grid.Column="2" Grid.Row="2"> 
    <Grid.Style> 
     <Style TargetType="Grid"> 
      <Setter Property="Visibility" Value="Collapsed"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsChecked, ElementName=comSecButton}" 
          Value="True"> 
        <Setter Property="Visibility" Value="Visible"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Style> 
    ... 
</Grid>