繁体   English   中英

如何在WPF绑定中将UIElement或XAML作为内容返回

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM