WPF数据与XML文档绑定

时间:2013-07-26 12:39:12

标签: c# wpf xml combobox

所以在过去的一年里我一直在使用android,而且有些人可能知道android中的所有静态String值都保存在String.xml文件中。

现在我正在开发一个WPF项目,在这个项目中我有一个Combobox。这个组合框包含的值永远不会改变!

因此我想知道你是否可以将组合框数据绑定在包含组合框所包含的所有String值的XML文件中。

我的问题分为两小部分:

  1. 是否可以将组合框的数据与XML文档绑定,甚至建议这样做?如果是的话我该怎么做?

  2. 如果可能,您将如何重新设定用户从组合框中选择的“选项”?

2 个答案:

答案 0 :(得分:2)

在.NET编程中没有什么类似于“string.xml文件中保存的所有静态字符串值”,所以不要忘了。

有很多方法可以做到这一点,包括创建自己的strings.xml文件,在运行时加载它并绑定到结果。

或者,你可以快速而简单地完成。如果你想通过绑定来创建一个类型并添加你的字符串。

namespace HerpDerp
{
    public static class Strings
    {
        public static string[] ComboLol {get;set;} // must be a Property
        static Strings()
        { 
            ComboLol = new string[]{"Lol", "kthx", "bai" };
        }
    }
}

然后,您可以使用Static markup extension从xaml引用此内容。

<ComboBox xmlns:derp="clr-namespace:HerpDerp"
          ItemsSource="{x:Static derp:Strings.ComboLol}" />

或者,好吧,直接添加它们

<ComboBox>
    <ComboBoxItem>Lol</ComboBoxItem>
    <ComboBoxItem>kthx</ComboBoxItem>
    <ComboBoxItem>bai</ComboBoxItem>
</ComboBox>

取决于您对列表的要求。如果它永远不会改变,那么第二个可能更好。

答案 1 :(得分:1)

无法从XML绑定值。但是如果你已经知道要显示的值,那么你可以做这样的事情。

    <ComboBox x:Name="MyCombo">
        <ComboBoxItem>Item1</ComboBoxItem>
        <ComboBoxItem>Item2</ComboBoxItem>
        <ComboBoxItem>Item3</ComboBoxItem>
    </ComboBox>

如果您熟悉MVVM,则可以使用ViewModel处理selectedItem;否则你可以从表单/控件类中访问“MyCombo”。