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

C# xaml c中的可观测集合静态资源#,c#,uwp,uwp-xaml,C#,Uwp,Uwp Xaml,我想创建一个可观察的集合,并将其绑定到combobox下拉列表的itemsource。我需要将此集合作为一个资源(页面/网格),以便能够在数据模板中绑定到它。 在定义类结构时需要帮助。一个示例类结构将非常有用。收集非常简单,例如所有国家的列表。重要的要求是,我应该能够添加项目到它。 基本上是一个包含国家(字符串)的集合,允许我添加项目。网络上有大量示例。这里有一个简单的例子: xaml c中的可观测集合静态资源# 对于这个需求,您可以在代码隐藏中创建自定义类,然后在xaml中实现它 例如: pu

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

网络上有大量示例。这里有一个简单的例子:

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

对于这个需求,您可以在代码隐藏中创建自定义类,然后在xaml中实现它

例如:

public class CountrysObservableCollection : ObservableCollection<string>
{

    public CountrysObservableCollection()
    {

    }
}
公共类CountrysObservableCollection:ObservableCollection
{
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}"/>
<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");
 }

更新数据源

private  void Button_Click(object sender, RoutedEventArgs e)
{
    var countrys = Resources["Countrys"] as ObservableCollection<string>;
    countrys.Add("New World");
}
private void按钮\u单击(对象发送者,路由目标)
{
var countrys=资源[“countrys”]作为可观测集合;
国家添加(“新世界”);
}
更新

<ComboBox ItemsSource="{StaticResource Countrys}"/>
<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");
 }

中国
美国
日本
英格兰
俄罗斯
韩国
加拿大
澳大利亚
私有无效按钮\u单击(对象发送者,路由目标e)
{
var countrys=Application.Current.Resources[“countrys”]作为可观测集合;
国家添加(“新世界”);
}

我找不到UWP示例。你能分享一个吗?我需要什么类型的课程?我应该在google上搜索什么?我尝试了Persons示例,我可以显示组合框。但是,如何在代码中动态添加更多项。e、 如果我想允许用户添加新的Person,请告诉我在组合框初始化后从c#向这个类添加项的语法。e、 g.当用户添加另一个countrySure时,您可以使用
var countrys=Resources[“countrys”]作为ObservableCollection获取此集合在页面类中。非常感谢您的帮助。我试过了,除了最后一点外,它似乎还起作用。我需要在一个页面上点击按钮,在另一个页面上点击国家更新(单独的窗口)。那么,有没有一种方法可以将可观察集合声明为应用程序资源而不是页面资源,这样所有页面都可以访问它?我正在寻找一种方法,允许一个页面添加国家/地区,第二个页面可以看到更改。因此,您可以将其放在应用程序的应用程序资源中。我遇到以下错误:CountrysObservableCollection类型的值无法添加到“IList”1类型的集合或字典中