如何在XAML中将静态值传递给IValueConverter
我想在我的WP7应用程序中使用从Web服务获取的静态文本。 每个文本都有一个名称(indetifier)和一个Content属性。
例如,文本可能如下所示:
Name = "M43"; Content = "This is the text to be shown";
然后,我想将文本的名称(即标识符)传递给IValueConverter
,然后IValueConverter
将查找Name并返回文本。
我认为转换器看起来像这样:
public class StaticTextConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value != null) { return App.StaticTexts.Items.SingleOrDefault(t => t.Name.Equals(value)).Content; } return null; } }
然后在XAML中:
...
但是,这似乎不起作用,我不确定我是否正确地将值传递给转换器。
有没有人有一些建议?
我终于找到了答案。 答案是@Shawn Kendrot和我在这里问的另一个问题之间的混合: IValueConverter在某些情况下没有被调用
总结使用IValueConverter
的解决方案,我必须在以下庄园中绑定我的控件:
由于使用转换器参数传入文本的ID,因此转换器看起来几乎相同:
public class StaticTextConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (parameter != null && parameter is string) { return App.StaticTexts.Items.SingleOrDefault(t => t.Name.Equals(parameter)).Content; } return null; } }
但是,事实certificate,如果它没有DataContext
则不会调用绑定和转换器。 要解决这个问题,控件的DataContext
属性必须设置为任意的:
然后一切都按预期工作!
如果要使用值转换器,则需要将字符串传递给值转换器的参数
XAML:
转换器:
public class StaticTextConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (parameter != null) { return App.StaticTexts.Items.SingleOrDefault(t => t.Name.Equals(parameter)).Content; } return null; } }
问题在于你的绑定。 它将检查DataContext
,并在此对象上,它将尝试评估该对象上的属性M62
和ValueboxConsent
。
您可能希望在应用程序中的某处添加静态密钥,您可以将其绑定到:
M62是您的密钥所在的静态类..如下所示:
上述就是C#学习教程:如何在XAML中将静态值传递给IValueConverter分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public static class M62 { public static string ValueboxConsent { get { return "myValueBoxConsentKey"; } } }
xmlns:prop="clr-namespace:MyProj.Properties;assembly=namespace:MyProj"
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/942458.html