【发布时间】:2014-08-22 18:50:01
【问题描述】:
我正在尝试在控件上设置可见性属性,以便在绑定值与任意值匹配时可见。
我已将转换器设置为静态资源
应用绑定
<Button Content="Foo" Visibility="{Binding SelectedValue, Converter={StaticResource ValueToVisibilityConverter}, ConverterParameter='1,2'}" />
但我遇到了错误
错误 1 '{绑定 SelectedValue, Converter={StaticResource ValueToVisibilityConverter}, ConverterParameter='1,2'}' 不能使用 作为“可见性”的值。数字不是有效的枚举值。
我的转换器代码是
public class ValueToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,System.Globalization.CultureInfo culture)
{
if (value == null || parameter == null || !(value is String))
return Visibility.Collapsed;
var currentValue = value.ToString();
var matchStrings = parameter.ToString();
var found = false;
foreach (var state in matchStrings.Split(','))
{
found = (currentValue == state.Trim());
if (found)
break;
}
return found ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
错误停止编译,感觉好像太聪明了,忽略了我的转换器。
是我应用错了还是不知道正在进行的某些过程。
编辑:
要将转换器作为静态资源,我的窗口定义中有以下内容
xmlns:myConverters="clr-namespace:<namespace>;assembly=<assemblyname>"
这在我的窗口资源中,与其他完美运行的转换器的代码相同
<myConverters:ValueToVisibilityConverter x:Key="ValueToVisibilityConverter" />
【问题讨论】:
-
为什么要传递 ConverterParameter='1,2' ?
标签: c# wpf binding ivalueconverter