【发布时间】:2015-02-05 10:10:19
【问题描述】:
我想将边框的光标绑定到我的 TemplateInstance 的私有属性。
XAML:
<Border Cursor="{Binding ToggleCursor}">
C#:
private Cursor ToggleCursor {
get {
return IsEnabled ? Cursors.Hand : Cursors.Arrow;
}
}
我还在我的 TemplateClass 中实现了 INotifyPropertyChanged:
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string PropertyName) {
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) {
handler(this, new PropertyChangedEventArgs(PropertyName));
}
}
当然,我通知框架有关更改:
(即使我不这样做,它仍然应该至少获得一次该属性)
IsEnabledChanged += (sender, e) => OnIsEnabledChanged();
和
private void OnIsEnabledChanged() {
OnPropertyChanged("ToggleCursor");
}
是的,该类实现了接口。
问题是,边框永远不会从属性中获取值。
F.e.如果我在属性中返回Cursors.Cross,它仍然显示Cursors.Arrow。
有什么想法吗?
示例:
这是一种具有动画行为的复选框,蓝色边框接收光标绑定。问题已解决 - 忘记设置 datacontext -__-
【问题讨论】:
-
当您更改 IsEnabled 时,您是否正在提高 ToggleCursor 的属性更改
-
@pm_2 是的,请参阅我对 toadflakz 答案的评论
-
您是否在此处创建自定义控件,并尝试根据该控件是否启用来更改
Border元素的光标? -
@NoelWidmer 您的控件源自哪个基本控件?使用自定义控件模板和触发器可能有一种更简单的方法来执行您想要的操作。
-
@StevenRands 来自控制