我有一个带有Window的简单WPF应用程序。该窗口具有依赖属性。
public static readonly DependencyProperty ShiftProperty;
static VirtualKeyboard()
{
ShiftProperty = DependencyProperty.Register("Shift", typeof(bool), typeof(VirtualKeyboard));
}
public bool Shift
{
get { return (bool)GetValue(ShiftProperty); }
set { SetValue(ShiftProperty, value); }
}
现在,在这个窗口中,我有一个按钮,如果Shift为True,我希望通过应用样式来直观显示。
我承认自己在WPF方面缺乏经验,但我相信这可以通过数据触发器来解决。我的问题是把它挂起来。
这是按钮的xaml。
<Button Grid.Row="4" Grid.ColumnSpan="2" Grid.Column="0" Command="local:VirtualKeyboard.ShiftButtonPressedCommand" Content="Shift" Name="ShiftButton">
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Shift}" Value="True">
<Setter Property="Control.Background" Value="Black">
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
我会感激所有帮助。
谢谢, 斯蒂芬
答案 0 :(得分:0)
你是对的。你可以使用datatriggers来实现它。你需要将寡妇的datacontext设置为此工作。否则绑定将无法访问你的依赖属性。
public VirtualKeyboard()
{
InitializeComponent();
DataContext = this;
}
并指定您的风格,如
<Button Grid.Column="0" Content="Shift" Name="ShiftButton">
<Button.Style>
<Style>
<Setter Property="Button.Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Shift}" Value="True">
<Setter Property="Button.Visibility" Value="Visible">
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>