[英]How to return UIElement or XAML as content in WPF Binding
嗨,请原谅我的英语不好。
好吧...我试图绑定到对象列表以填充我的ItemsControl。 对象表示从配置文件中获取的一对名称和设置值。 目的是制作一些设置编辑器,将编辑的数据保存回文件。
对象很简单:
MySettings
{
public string Name { get; set; }
public string Value { get; set; }
}
有一些简单的标记(这是一个草图,而不是确切的项目):
<ItemsControl Name="myItmCtrl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<!--Name of the property-->
<TextBlock Text="{Binding Name}" />
<!--Its value-->
<TextBox Text="{Binding Value}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
最后,我要添加myItmCtrl.ItemsSource = List<MySettings>;
在代码背后。
一切都应正常工作。
然后我desided推进我的形式,因为一些的Value
S(其全部存储为字符串)可以采取的值"TRUE"
和"FALSE"
,其可以容易地转化为bool
。 因此,我不想在某些情况下键入TRUE或FALSE,而是想通过不同的UIElement- CheckBox
来表示这些值,然后绑定到其IsChecked
属性。
因此,我希望字符串值由TextBox
表示,布尔值由CheckBox
。 我可以在后台代码中做到这一点,并通过List<MySettings>
创建元素,但我没有。 这样做的目的是找到一些棘手的扩展名,以描述XAML中的所有扩展名(或50/50 xaml /后台代码)。
非常感谢
最好的解决方案是使用在字符串和布尔值之间转换的ValueConverter
。 由于我们已经有了一些不错的方法来将字符串转换为布尔值,反之亦然,所以这应该不是问题。 您可以构建自己的ValueConverter
就像amnezjak提到的文章所述。
您的TextBox
的绑定可能如下:
<TextBox Text="{Binding Value, Converter={StaticResource myConverter}}"/>
myConverter
是您导入的实际转换器的键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.