有没有办法在WPF数据绑定中更改运行时的属性值.假设我的TextBox绑定到IsAdmin属性.无论如何我可以在XAML中更改该属性值!IsAdmin.
我只是想否定财产,所以Valueconverter可能是一个矫枉过正!
注意:不使用ValueConverter
Ree*_*sey 42
你可以使用IValueConverter
.
[ValueConversion(typeof(bool), typeof(bool))]
public class InvertBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool original = (bool)value;
return !original;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
bool original = (bool)value;
return !original;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你设置你的绑定像:
<TextBlock Text="{Binding Path=IsAdmin, Converter={StaticResource boolConvert}}" />
Run Code Online (Sandbox Code Playgroud)
添加资源(通常在您的UserControl/Window中),如下所示:
<local:InvertBooleanConverter x:Key="boolConvert"/>
Run Code Online (Sandbox Code Playgroud)
编辑以回应评论:
如果由于某种原因想要避免使用值转换器(虽然我觉得它是最合适的位置),您可以直接在ViewModel中进行转换.只需添加如下属性:
public bool IsRegularUser
{
get { return !this.IsAdmin; }
}
Run Code Online (Sandbox Code Playgroud)
但是,如果这样做,请确保您的IsAdmin
属性设置器还PropertyChanged
为"IsRegularUser"和"IsAdmin" 引发事件,因此UI会相应地更新.
归档时间: |
|
查看次数: |
22990 次 |
最近记录: |