gpt4 book ai didi

c# - 在绑定(bind)字符串上使用时无法使简单转换器工作

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:11 26 4
gpt4 key购买 nike

我定义了以下转换器 (C#):

class BodyValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string s = value.ToString();
int prefixLength;
if (!int.TryParse(parameter.ToString(), out prefixLength))
return s;
return s.Substring(0, prefixLength);
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}

这将从传递的字符串的开头开始,并将返回我指定为参数的字符数。

在我的 XAML 中,我实例化了转换器:

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

尝试在文本 block 中使用此转换器时出现错误:

<DataTemplate x:Key="AppointmentTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Subject}"></TextBlock>
<TextBlock Text="{Binding Path=Subject, Converter={StaticResource BodyValueConverter}, ConverterParameter=1}"></TextBlock>
</StackPanel>
</DataTemplate>

错误是:

XAMLParseException: Provide value on 'System.Windows.Markup.StaticResourceHolder' threw an exception.

第一个文本 block 可以很好地显示主题。第二行是给我异常(exception)的原因。

最佳答案

XAML 中对象的顺序是什么?

Converter必须在实际使用之前定义,因此请确保您的 <Converter>在你的 <DataTemplate> 之上在你的Resources

另一种选择是切换到使用 DynamicResource而不是 StaticResource , 因为 DynamicResource在需要时计算,而不是在加载 XAML 时计算

关于c# - 在绑定(bind)字符串上使用时无法使简单转换器工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9177597/

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