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