问题描述
我想创建一个可观察的集合并将其绑定到组合框下拉列表的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