我已经搜遍了各种资料,但找不到答案。我有两个问题:
- 如何在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中引用合并的字典,但我遇到了同样的问题。
以下是一些示例代码。如果有多个项,则必须具有键才能编译此第一部分,因为我有转换器,它抱怨每个项都必须有一个键。
<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>
谢谢你
“/文件夹名称/我的RD.xaml”
? - mg007