我搜索了高低,找不到答案。我有两个问题
- 如何在 XAML 中创建数组或集合。我有一个数组,我想插入其中并绑定到组合框。我的第一个想法是将 ItemsControl 放在资源字典中,但组合框的 ItemsSource 需要 IEnumerable,所以这不起作用。
这是我在资源字典中尝试过的,但都不起作用
<ItemsControl x:Key="stateList">
<sys:String>AL</sys:String>
<sys:String>CA</sys:String>
<sys:String>CN</sys:String>
</ItemsControl>
<ItemsControl x:Key="stateList2">
<ComboBoxItem>AL</ComboBoxItem>
<ComboBoxItem>CA</ComboBoxItem>
<ComboBoxItem>CN</ComboBoxItem>
</ItemsControl>
这就是我绑定它的方式
<ComboBox SelectedValue="{Binding Path=State}" ItemsSource="{Binding Source={StaticResource stateList2}}" >
</ComboBox>
编辑:更新
我让第一部分以这种方式工作
<col:ArrayList x:Key="stateList3">
<sys:String>AL</sys:String>
<sys:String>CA</sys:String>
<sys:String>CN</sys:String>
</col:ArrayList>
但是,我宁愿不使用数组列表,我想使用通用列表,所以如果有人知道如何请告诉我。
编辑更新:我猜 XAML 对泛型的支持非常有限,所以也许数组列表是我现在能做的最好的,但如果有人有分析器,我仍然希望在第二个问题上得到帮助
第二。我尝试在我的 XAML 中引用合并的资源字典并遇到问题,因为在 Window.resources 下我拥有的不仅仅是字典,因此它需要我添加 x:Key。添加密钥后,系统将无法再在我的资源字典中找到项目。我不得不将合并的字典移动到 Grid.Resources 。理想情况下,我想在 app.xaml 中引用合并的字典,但我有同样的问题
这是一些示例代码。第一部分需要一个 x:key 来编译,因为我有转换器,它抱怨说如果有多个项目,每个项目都必须有一个密钥
<UserControl.Resources>
<win:BooleanToVisibilityConverter x:Key="VisibilityConverter" />
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourcesD.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
我不得不把它改成这个
<UI:BaseStep.Resources>
<win:BooleanToVisibilityConverter x:Key="VisibilityConverter" />
</UI:BaseStep.Resources>
<Grid>
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourcesD.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
</Grid>
谢谢