是否可以将触发器的value
属性基于元素的属性?
例如,在ControlTemplate
的{{1}}中,我试图将其ScrollBar
属性设置为Visibility
,如果其Collapsed
和{ {1}}属性相等。
但是,以下操作无效,因为您无法将Minimum
设置为Maximum
的{{1}},因为Binding
不是Value
}}
Trigger
那么这可以完全用触发器来完成,还是我必须在代码隐藏中执行此操作?
答案 0 :(得分:1)
在此方案中,Id建议您创建自定义行为
喜欢这个
public class MinMaxVisibilityBehavior : Behavior<ScrollBar>
{
public override void OnAttached()
{
DependencyPropertyDescriptor
.FromProperty(ScrollBar.MaximumProperty, typeof(ScrollBar))
.AddValueChanged(AssociatedObject, CheckMinMax);
DependencyPropertyDescriptor
.FromProperty(ScrollBar.MinimumProperty, typeof(ScrollBar))
.AddValueChanged(AssociatedObject, CheckMinMax);
}
private void CheckMinMax(object sender, EventArgs e)
{
AssociatedObject.Visibility = AssociatedObject.Minimum ==
AssociatedObject.Maximum ? Visibility.Hidden : Visibility.Visible;
}
}
然后在你的XAML中
<ScrollBar>
........
<i:Interaction.Behaviors>
<local:MinMaxVisibilityBehavior />
</i:Interaction.Behaviors>
</ScrollBar>