我在CodeProject上进行了一个示例:"Automatically validating business entities in WPF using custom binding and attributes"我想添加一个在没有错误时启用的按钮。
我在MainWindow.xaml上有这一行:
"K"
我将使用转换器,但我需要知道输入的类型并返回一个布尔值。
答案 0 :(得分:0)
制作一个类似于count为0的属性,设置为false:
private bool _enableButton;
public bool ButtonEnabled
{
get { return _enableButton; }
set { _enableButton= value; }
}
在控制器代码中的某处,设置:
ButtonEnabled = (items.Count == 0) ? false : true;
然后在您的xaml代码中,您不需要转换器只需适当地绑定它。
P.S。请使用更有意义的名字然后我的例子
答案 1 :(得分:0)
托马斯,
在上面链接的示例中,有一个我们可以使用的具有Error属性的模型对象。
我稍微更改了一下,如果错误中有任何字段,则错误不为空 - 只有一个字段。
该类现在引发了一些事件,以便在向表单添加/删除错误时,可以对按钮的IsEnabled状态进行一些“实时”修改:
public class User : IDataErrorInfo, INotifyPropertyChanged
{
public string Error
{
get
{
return this["Name"];
}
}
然后按钮上的绑定仅为:
<Button
IsEnabled="{Binding Path=Error,
Converter={StaticResource stringToBooleanConverter}}" />
如果转换器存在:
class StringToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
String s = value as String;
return String.IsNullOrEmpty(s);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
我测试过,它有效,告诉我是否有任何问题