如何从列表框中的项目访问复选框
How to access checkbox from items inside a listbox
我需要对每个项目应用一个条件,如果为真,则应在项目中显示复选框,如果为假,则应隐藏。如何实现?
这里是 xaml:
<ListBox Name="lbAllInstances" Width="500" Height="400"
SelectionMode="Multiple"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Visible"
SelectionChanged="lbAllInstances_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding Name}" TextTrimming="CharacterEllipsis" VerticalAlignment="Center" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
尝试使用 BooleanToVisibilityConverter
<!-- In your resources section of the XAML -->
<BooleanToVisibilityConverter x:Key="BoolToVis" />
<ListBox.ItemTemplate>
...
<CheckBox Grid.Column="0" VerticalAlignment="Center"
Visibility="{Binding Path=IsVisibleProperty, Converter={StaticResource BoolToVis}}"/>
...
</ListBox.ItemTemplate>
您可以使用 DataTriggers
完成此操作。
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=PropertyThatSetsVisibility}" Value="True">
<Setter TargetName="NameOfCheckBoxToHideInItemTemplate" Property="Visibility" Value="Hidden"/>
</DataTrigger>
</DataTemplate.Triggers>
我需要对每个项目应用一个条件,如果为真,则应在项目中显示复选框,如果为假,则应隐藏。如何实现?
这里是 xaml:
<ListBox Name="lbAllInstances" Width="500" Height="400"
SelectionMode="Multiple"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Visible"
SelectionChanged="lbAllInstances_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding Name}" TextTrimming="CharacterEllipsis" VerticalAlignment="Center" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
尝试使用 BooleanToVisibilityConverter
<!-- In your resources section of the XAML -->
<BooleanToVisibilityConverter x:Key="BoolToVis" />
<ListBox.ItemTemplate>
...
<CheckBox Grid.Column="0" VerticalAlignment="Center"
Visibility="{Binding Path=IsVisibleProperty, Converter={StaticResource BoolToVis}}"/>
...
</ListBox.ItemTemplate>
您可以使用 DataTriggers
完成此操作。
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=PropertyThatSetsVisibility}" Value="True">
<Setter TargetName="NameOfCheckBoxToHideInItemTemplate" Property="Visibility" Value="Hidden"/>
</DataTrigger>
</DataTemplate.Triggers>