gpt4 book ai didi

c# - WPF 绑定(bind)控制可见性 "Numbers are not valid enumeration Values"

转载 作者:行者123 更新时间:2023-11-30 22:05:12 25 4
gpt4 key购买 nike

我正在尝试在控件上设置可见性属性,以便在绑定(bind)值与任意值匹配时可见。

我已将我的转换器设置为静态资源

应用绑定(bind)

<Button Content="Foo" Visibility="{Binding SelectedValue, Converter={StaticResource ValueToVisibilityConverter}, ConverterParameter='1,2'}" />

但是我遇到了错误

Error 1 '{Binding SelectedValue, Converter={StaticResource ValueToVisibilityConverter}, ConverterParameter='1,2'}' cannot be used as a value for 'Visibility'. Numbers are not valid enumeration values.

我的转换器代码是

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" />

最佳答案

这是应该工作的代码。

<Button Content="Foo" 
Visibility="{Binding SelectedValue,
Converter={StaticResource ValueToVisibilityConverter},
ConverterParameter=1|2}" />

你需要做的事情

  1. ConverterParameter 中的值在传递时不带任何引号。因此从转换器参数中删除单引号。

  2. 没有什么可以阻止您将多个值发送到参数中,只要您有一个分隔符稍后将它们分开,但您不能使用逗号分隔 XAML。 因此,在这种情况下使用管道,并在转换器中通过管道 | 拆分参数。

此外,请注意
a) 资源中必须有一个像这样的转换器的静态资源。

<local:ValueToVisibilityConverter x:Key="ValueToVisibilityConverter" />

其中 localxmlns:local="您定义此转换器的项目"

注意:几年前,eBay 在 url 中使用的一个技巧是用 QQ 分隔 URL 中的数据。双 Q 不会自然出现在文本数据中。如果您遇到文本定界符的问题,可以避免编码问题,请使用 QQ ......但这不适用于拆分(它需要单个字符,但很高兴知道):)

关于c# - WPF 绑定(bind)控制可见性 "Numbers are not valid enumeration Values",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com