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

2023-12-25

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


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

对于这个需求,你可以定制可观察集合 https://learn.microsoft.com/en-us/dotnet/api/system.collections.objectmodel.observablecollection-1?view=netcore-3.1类在代码隐藏中,然后在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>

Usage

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

更新数据源

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

update

<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");
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xaml c# 中的可观察集合静态资源 的相关文章

随机推荐