外国UIElement上的WPF样式触发器

时间:2009-08-10 18:29:31

标签: wpf xaml triggers uielement

如果我有2 ButtonAB,是否可以创建StyleTrigger,以便在用户悬停时超过Button B,会导致Button A的{​​{1}}更改?我尝试过使用StyleSourceName,并且遇到编译错误。这是我正在愚弄的XAML - 我想在TargetName被鼠标悬停时使Button A的内容加粗:

Button B

1 个答案:

答案 0 :(得分:0)

Trigger,就其本质而言,用于更改触发器应用于的元素的属性,而不是其他不相关的元素。可能有一些黑客你可以实现这样的事情,但我不认为这是好的做法或适合WPF的意图。

您可以将 btnA btnB 嵌入到单个用户控件中(然后可以访问UserControl.Triggers中的两者),但这可能没有逻辑意义为了你想做什么。这假设btnA和btnB总是属于一起。如果不是这样的话,你应该用老式的方式连接它,有几个事件和一些代码隐藏:

<StackPanel>
   <Button Name="btnA" Content="A"/>
   <Button Name="btnB" Content="B" MouseEnter="btnB_MouseEnter" MouseLeave="btnB_MouseLeave"/>
</StackPanel>

代码:

private void btnB_MouseEnter(object sender, MouseEventArgs e)
{
    btnA.FontWeight = FontWeights.Bold;
}

private void btnB_MouseLeave(object sender, MouseEventArgs e)
{
    btnA.FontWeight = FontWeights.Normal;
}