<StackPanel Grid.Column="0" >
<ToggleButton Name="buttonEditListBoxItem"
Content="Edit"
IsChecked="False"
Click="buttonEditListBoxItem_Click"></ToggleButton>
<ListBox Name="ListBoxTriggers"
SelectedValuePath="TriggerId"
IsSynchronizedWithCurrentItem="True"
SelectionChanged="Triggers_SelectionChanged"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate> <Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="AUTO"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<CheckBox Visibility="{Binding ElementName=buttonEditListBoxItem, Path=IsChecked, Converter={StaticResource visibilityConverter}}" Grid.Column="0" VerticalAlignment="Center" x:Name="checkBoxTriggers" ></CheckBox>
<Button Grid.Column="1" Style="{StaticResource GlassButton}"
Uid="{Binding Path=TriggerId}"
Margin="5"
x:Name="ButtonTrigger"
GotFocus="ButtonTrigger_GotFocus"
>
<Button.Content>
<TextBlock Foreground="White" TextAlignment="Justify"
TextWrapping="Wrap" Margin="6" Text="{Binding Path=Name}"/>
</Button.Content>
</Button>
</Grid>
</DataTemplate> </ListBox.ItemTemplate>
</ListBox>
我有一个Listbox的数据模板,它有一个按钮和一个复选框。列表框外面有一个ToggleButton,它决定了复选框的可见性。 问题是,如果我点击了ToggleButton并且复选框是可见的,当我再次单击ToggleButton时,我已经检查了一些复选框,隐藏了复选框,但我希望复选框重置;当它们再次可见时,我不想点击任何复选框。
答案 0 :(得分:2)
您可以为CheckBox的IsVisibleChanged事件添加处理程序:
IsVisibleChanged="checkBoxTriggers_IsVisibleChanged"
并在句柄中清除IsChecked标志:
private void checkBoxTriggers_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
CheckBox cb = sender as CheckBox;
if (!cb.IsVisible)
cb.IsChecked = false;
}
使用类似于此的触发器可能会产生相同的效果:
<Trigger Property="IsVisible" Value="false">
<Setter Property="IsChecked" Value="false" />
</Trigger>