我有以下xaml:
<DockPanel>
<DockPanel>
<CheckBox IsChecked="{Binding Path=Test}" />
<CheckBox IsChecked="{Binding Path=Test}" />
</DockPanel>
<DockPanel DockPanel.Dock="Left" Width="10" Background="Blue">
<DockPanel.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Test}" Value="True">
<Setter Property="DockPanel.Background" Value="Yellow" />
</DataTrigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
</DockPanel>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
现在 - 2个复选框正确链接 - 检查一个将检查另一个 - 但数据触发器根本没有触发.
我究竟做错了什么?
我正在努力使这个简短易读.我正在创建一个在代码隐藏中具有DP定义(RandomNumber)的自定义控件.此DP的值是由我的控件中的按钮触发的单击事件设置的.
以下是相关代码:
public partial class Tester
{
public int RandomNumber
{
get { return (int)GetValue(RandomNumberProperty); }
set { SetValue(RandomNumberProperty, value); }
}
private Random rnd = new Random();
private void Button_Click(object sender, RoutedEventArgs e)
{
RandomNumber = rnd.Next();
}
Run Code Online (Sandbox Code Playgroud)
click事件有效并且值已设置,我可以确认它已更改.我遇到的问题是当我在我的应用程序中使用此控件时,我尝试将"RandomNumber"绑定到我的View Model上的另一个DP,绑定永远不会更新:
<DockPanel>
<TextBlock Text="{Binding Path=Numeric}"
DockPanel.Dock="Top"
Height="25"/>
<TestProject:Tester RandomNumber="{Binding Path=Numeric}"
DockPanel.Dock="Top"
Height="25"
x:Name="TestControl"/>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我有一个带有名为Numeric的DP的视图模型,我可以确认该值实际上从未被绑定更新.
我无法弄清楚我做错了什么.在此先感谢您的帮助!