Нажатие кнопки изменяет видимость DataGrid с помощью триггера в WPF - PullRequest
0 голосов
/ 14 апреля 2011

Привет! Я пытаюсь найти способ, которым при нажатии кнопки изменяется видимость другого элемента управления, например DataGrid с триггером в XAML.

Кнопка только изменяет видимость DataGrid на Visible, он делает другие вещи в Code Behind, но я думаю, что это можно сделать в стиле с помощью триггера.

Я попытался найти решение, и кажется, что это возможно, но я могуне понимаю как.

Заранее спасибо.

Ответы [ 2 ]

9 голосов
/ 14 апреля 2011
<Button Content="Button!">
    <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
            <BeginStoryboard>
                <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.Target="{x:Reference dataGrid}"
                                                   Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0"
                                                Value="{x:Static Visibility.Visible}"/>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Button.Triggers>
</Button>

{x:Reference dataGrid} ссылается на DataGrid с именем dataGrid, в качестве альтернативы вы можете просто использовать Storyboard.TargetName. Обычно вы используете свойство Storyboard.Target, если делаете привязку или ссылки на ресурсы.

1 голос
/ 14 апреля 2011

Просто предложение, но как насчет того, чтобы что-то более понятное, включив флажок для включения / выключения отображения DataGrid? Это то, что я обычно делаю:

<DockPanel LastChildFill="True">
   <CheckBox DockPanel.Dock="Right" VerticalAlignment="Center" x:Name="DisplayBox"
                      Content="Display grid" Margin="4" IsChecked="False"/>
   <DataGrid Visibility="{Binding ElementName=DisplayBox, Path=IsChecked, Converter={StaticResource BoolToVisibilityConverter}}" />
</DockPanel>

И, конечно, вам нужно будет реализовать соответствующий конвертер

...