【发布时间】:2020-09-10 11:03:20
【问题描述】:
我想创建一个可观察的集合并将其绑定到组合框下拉列表的 itemsource。我需要使这个集合成为一个资源(页面/网格),以便能够在数据模板中绑定到它。 在定义类结构时需要帮助。一个示例类结构真的很有帮助。收集非常简单,例如所有国家的名单。重要的要求是我应该能够向其中添加项目。 基本上是一个包含国家(字符串)的集合,允许我添加项目。
【问题讨论】:
我想创建一个可观察的集合并将其绑定到组合框下拉列表的 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");
}
【讨论】:
var countrys = Resources["Countrys"] as ObservableCollection<string>; 获取此集合。
网络上有大量示例。这是一个简单的:Explain Combo Box Binding In MVVM - WPF
【讨论】: