WPF在ViewModel.PropertyChanged事件上更改Button Content
我的尝试(下面)失败了:
< Canvas x:Key =“Lock”... />
< Canvas x:Key =“Unlock”... />
< Style x:Key =“LockButtonStyle”TargetType =“{x:Type Button}”>
< Style.Triggers>
< DataTrigger Binding =“{Binding Path = IsReadOnly}”Value =“True”>
< DataTrigger.Setters>
< Setter Property =“Content”Value =“{StaticResource Lock}”/>
< /DataTrigger.Setters>
< / DataTrigger>
< DataTrigger Binding =“{Binding Path = IsReadOnly}”Value =“False”>
< DataTrigger.Setters>
< Setter Property =“Content”Value =“{StaticResource Unlock}”/>
< /DataTrigger.Setters>
< / DataTrigger>
< /Style.Triggers>
< /样式>
...
< Button Content =“{StaticResource Lock}”/>
当ViewModel上的IsReadOnly属性发生更改时,我试图让按钮更改(它使用“IsReadOnly”作为PropertyName触发INotifyPropertyChanged.PropertyChanged)。我错过了什么?
.NET 3.5
答案(至少对我而言 - 不支持一般情况):
我刚刚为布尔属性绑定编写了一个快速转换器。
[ValueConversion(typeof(bool),typeof(object))]
public class BooleanValueConverter:IValueConverter
{
公共对象FalseValue {get;组; }
公共对象TrueValue {get;组; }
#region IValueConverter成员
public object Convert(对象值,类型targetType,
对象参数,CultureInfo文化)
{
return(bool)值? this.TrueValue:this.FalseValue;
}
公共对象ConvertBack(对象值,类型targetType,
对象参数,CultureInfo文化)
{
return object.Equals(this.TrueValue,value)?真假;
}
#endregion
}
...
< local:BooleanValueConverter x:Key =“LockOrUnlock”
TrueValue =“{StaticResource Unlock}”
FalseValue =“{StaticResource Lock}”/>
...
< Button Content =“{Binding Path = IsReadOnly,
Converter = {StaticResource LockOrUnlock}}“/>
没有找到相关结果
已邀请:
2 个回复
播匣扦阔食
魄龟呸筹
窗口的C#:
ViewModel类的C#: