我对wpf比较新,我还不明白绑定。
我想在我的应用程序中使用相同的项目有几个组合框。基本的解决方案是复制粘贴,但这不是一个好习惯。所以我想把一个带有我想要的内容的静态资源放在一起,并将所有组合框绑定到它。它编译并运行良好,但组合框是空的。
以下是代码:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ItemsControl x:Key="Validations">
<ItemsControl.Items>
<ComboBoxItem>String</ComboBoxItem>
<ComboBoxItem>Numeric</ComboBoxItem>
</ItemsControl.Items>
</ItemsControl>
这是组合框:
<ComboBox ItemsSource="{Binding Source={StaticResource Validations}}"/>
我知道这方面的解决方案可能很简单,但我还没弄明白。我会继续努力;)
由于
答案 0 :(得分:2)
使资源成为字符串列表,而不是可视元素,然后使用StaticResource
扩展名将其分配给ItemsSource
属性,如下所示:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<x:ArrayExtension x:Key="Data" Type="{x:Type sys:String}">
<sys:String>String1</sys:String>
<sys:String>String2</sys:String>
<sys:String>String3</sys:String>
</x:ArrayExtension>
</Window.Resources>
<Grid>
<StackPanel>
<ComboBox ItemsSource="{StaticResource Data}"/>
<ComboBox ItemsSource="{StaticResource Data}"/>
<ComboBox ItemsSource="{StaticResource Data}"/>
</StackPanel>
</Grid>
</Window>
注意xmlns:sys
命名空间的定义(映射到程序集System
中的命名空间mscorlib
)以及使用x:ArrayExtension
元素在XAML中声明一个简单数组。