按钮单击会在WPF中使用触发器更改DataGrid的可见性

时间:2011-04-14 12:42:37

标签: wpf wpf-controls styles

您好我想找到一些方法来点击按钮时更改其他控件的可见性,例如在XAML中带有触发器的DataGrid。

该按钮仅将DataGrid的可见性更改为Visible,它在Code Behind中执行其他操作,但我认为这可以在带触发器的样式中完成。

我试图找到一个解决方案,似乎有可能做但我无法理解。

提前致谢。

2 个答案:

答案 0 :(得分:9)

<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 :(得分:1)

只是一个建议,但是,对于更容易理解的事情,如何使用Checkbox启用/禁用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>

当然,您必须实施适当的转换器