Как сбросить свойство isChecked флажка в таблице данных списка - PullRequest
1 голос
/ 26 февраля 2011
<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>

У меня есть шаблон данных для списка, в котором есть кнопка и флажок. За пределами списка есть кнопка ToggleButton, которая определяет видимость флажков.Проблема состоит в том, что если я нажал на ToggleButton, и флажки были видны, и я установил некоторые флажки, когда я нажимаю на ToggleButton снова, флажки скрыты, но я хочу, чтобы флажки сбрасывались;как в случае, когда они снова видны, я не хочу, чтобы ни один из флажков был нажат.

1 Ответ

2 голосов
/ 26 февраля 2011

Вы можете добавить обработчик для события IsVisibleChanged CheckBox:

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>
...