【发布时间】:2021-05-10 23:07:01
【问题描述】:
我无法到达与事件触发器不在同一个网格中的按钮。 在一个网格中,我们有一个触发器:
<Grid x:Name="BottomGrid" Margin="0, 30, 0, 0" >
<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="OpenMenuButton">
<BeginStoryboard Storyboard="{StaticResource MenuOpen}"></BeginStoryboard>
</EventTrigger>
...
</Grid>
在第二个中,有一个按钮 OpenMenuButton
<Grid x:Name ="TopGrid" Height="30" VerticalAlignment="Top" Background="#FF299FDD" >
<Grid x:Name="ButtonGrid">
<Button Name="CloseMenuButton" VerticalAlignment="Center" Style="{DynamicResource MaterialDesignFlatButton}" Content="{materialDesign:PackIcon ArrowCollapseRight}" ToolTip="Icon" Click="ButtonCloseMenu_Click"/>
<Button Name="OpenMenuButton" VerticalAlignment="Center" Style="{DynamicResource MaterialDesignFlatButton}" Content="{materialDesign:PackIcon Menu}" ToolTip="Icon" Visibility="Collapsed" Click="ButtonOpenMenu_Click"/>
</Grid>
...
</Grid>
但是有一个问题,EvenTrigger 找不到 OpenMenuButton,因为它位于树中的其他位置。 TopGrid.ButtonGrid.OpenMenuButton 之类的东西不起作用。什么是正确的相对路径及其语法?
【问题讨论】:
-
文档 (docs.microsoft.com/en-us/dotnet/api/…) 说:您可以将此属性设置为应用触发器集合(此 EventTrigger 所属的集合)范围内的任何元素的名称。这通常是包含此 EventTrigger 的模板中的命名元素。如果您直接在元素上设置 Triggers 属性,则它是该父元素范围内的命名元素。
标签: c# wpf triggers grid relative-path