这似乎是一个非常基础的问题,但我相信有更好的方法来解决这个问题。 我的UI中有一个按钮,它选择特定的选项卡并从ViewModel触发一个命令。
有没有更加干净、仅使用 XAML 的方式来执行该 UI 操作呢?我在考虑这样一种方式:
但不幸的是,似乎“事件触发器”不支持“点击”事件。为什么呢?在使用WPF工作几年后,我仍然有时会对触发器感到困惑,这基本上就是原因。 当尝试构建代码时,在
以下是当前代码(可以正常工作):
XAML:
<Button Content="Button!" Click="OnButtonClick" Command="{Binding WhateverCommand}" />
代码后台:
private void OnButtonClick(object sender, RoutedEventArgs e)
{
theTab.IsSelected = true;
}
有没有更加干净、仅使用 XAML 的方式来执行该 UI 操作呢?我在考虑这样一种方式:
<Button Content="Button!" Click="OnButtonClick" Command="{Binding WhateverCommand}">
<Button.Triggers>
<EventTrigger RoutedEvent="Click">
<Setter TargetName="theTab" Property="IsSelected" Value="True" />
</EventTrigger>
</Button.Trigger>
</Button>
但不幸的是,似乎“事件触发器”不支持“点击”事件。为什么呢?在使用WPF工作几年后,我仍然有时会对触发器感到困惑,这基本上就是原因。 当尝试构建代码时,在
Setter
行上出现错误。A value of type 'Setter' cannot be added to a collection or dictionary of type 'TriggerActionCollection'.
谢谢!
编辑 自从我被问及窗口的XAML结构,它看起来像这样:
<DockPanel LastChildFill="True">
<Ribbon DockPanel.Dock="Top">
<Button Content="Button!" Click="OnButtonClick" Command="{Binding WhateverCommand}" />
</Ribbon>
<TabControl>
<TabItem x:Name="theTab" />
</TabControl>
</DockPanel>