我想创建一个可观察的集合并将其绑定(bind)到组合框下拉列表的项目源。我需要将此集合作为资源(页面/网格),以便能够在数据模板内绑定(bind)到它。 需要帮助定义类结构。示例类结构确实会有帮助。收集非常简单,例如所有国家的列表。重要的要求是我应该能够向其中添加项目。 基本上是一个包含国家/地区(字符串)的集合,允许我添加项目。
最佳答案
observable collection static resource in 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");
}
关于c# - xaml c# 中的可观察集合静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63820481/