Xaml C#中可观察的集合静态资源

问题描述

我想创建一个可观察的集合并将其绑定到组合框下拉列表的itemsource。我需要将此集合作为资源(页面/网格),以便能够绑定到数据模板中。 在定义类结构时需要帮助。样本类结构确实会有所帮助。收集非常简单,例如所有国家的清单。重要的要求是我应该能够向其中添加项目。 基本上是一个包含国家(字符串)的集合,允许我添加项目。

解决方法

xaml c#中可观察的集合静态资源

为此,您可以在后面的代码中创建自定义ObservableCollection类,然后在xaml中实现它。

例如:

public class CountrysObservableCollection : ObservableCollection<string>
{

    public CountrysObservableCollection()
    {

    }
}

Xaml

<Page.Resources>
    <local:CountrysObservableCollection x:Key="Countrys">
        <x:String>China</x:String>
        <x:String>USA</x:String>
        <x:String>Japan</x:String>
        <x:String>England</x:String>
        <x:String>Russia</x:String>
        <x:String>Korea</x:String>
        <x:String>Canada</x:String>
        <x:String>Australia</x:String>
    </local:CountrysObservableCollection>
</Page.Resources>

用法

<ComboBox ItemsSource="{StaticResource Countrys}"/>

更新数据源

private  void Button_Click(object sender,RoutedEventArgs e)
{
    var countrys = Resources["Countrys"] as ObservableCollection<string>;
    countrys.Add("New World");
}

更新

<Application.Resources>
    <ResourceDictionary>
        <local:CountrysObservableCollection x:Key="Countrys">
            <x:String>China</x:String>
            <x:String>USA</x:String>
            <x:String>Japan</x:String>
            <x:String>England</x:String>
            <x:String>Russia</x:String>
            <x:String>Korea</x:String>
            <x:String>Canada</x:String>
            <x:String>Australia</x:String>
        </local:CountrysObservableCollection>
    </ResourceDictionary>
</Application.Resources>



 private  void Button_Click(object sender,RoutedEventArgs e)
 {
     var countrys = Application.Current.Resources["Countrys"]as ObservableCollection<string>;  
     countrys.Add("New World");
 }
,

网络上有大量示例。这是一个简单的例子:Explain Combo Box Binding In MVVM - WPF