Wpf 如何在XAML中设置ItemsSource?
我已将列表框的ItemsSource设置如下:Wpf 如何在XAML中设置ItemsSource?,wpf,xaml,Wpf,Xaml,我已将列表框的ItemsSource设置如下: <ListBox ItemsSource="{Binding abc}" /> 我想要什么 <ListBox> <listBox.ItemsSource> ????????????? <listBox.ItemsSource> </ListBox> ????????????? 第一项 第二项 @HighCore、@DanPazey和@Visha
<ListBox ItemsSource="{Binding abc}" />
我想要什么
<ListBox>
<listBox.ItemsSource>
?????????????
<listBox.ItemsSource>
</ListBox>
?????????????
第一项
第二项
@HighCore、@DanPazey和@Vishal:
事实上,标记绑定语法可能被证明是有用的,甚至是必要的
不要提及多重绑定,请考虑以下内容:
假设您需要将ListBox绑定到CollectionViewSource(用于排序或其他)。像这样:
<Window.Resources>
<CollectionViewSource x:Key="abc_CVS_Key" Source="{Binding abc}" />
</Window.Resources>
<ListBox ItemsSource="{Binding Source={StaticResource abc_CVS_Key}}">
</ListBox>
<ListBox>
<ListBox.Resources>
<CollectionViewSource x:Key="abc_CVS_Key" Source="{Binding abc}" />
</List.Resources>
<ListBox.ItemsSource>
<Binding Source="{StaticResource abc_CVS_Key}" />
</ListBox.ItemsSource>
</ListBox>
然后,出于技术原因,您可能希望将CVS资源的作用域仅限于所讨论的列表框
如果在属性中写下ItemsSource绑定
<ListBox ItemsSource="{Binding Source={StaticResource abc_CVS_Key}}">
<ListBox.Resources>
<CollectionViewSource x:Key="abc_CVS_Key" Source="{Binding abc}" />
</List.Resources>
</ListBox>
您的代码将被编译,但在运行时,您的程序将找不到您的abc_CVS_密钥资源密钥,因为该资源已在代码后面定义。在ListBox的ItemsSource绑定中引用资源之前,需要先定义资源。像这样:
<Window.Resources>
<CollectionViewSource x:Key="abc_CVS_Key" Source="{Binding abc}" />
</Window.Resources>
<ListBox ItemsSource="{Binding Source={StaticResource abc_CVS_Key}}">
</ListBox>
<ListBox>
<ListBox.Resources>
<CollectionViewSource x:Key="abc_CVS_Key" Source="{Binding abc}" />
</List.Resources>
<ListBox.ItemsSource>
<Binding Source="{StaticResource abc_CVS_Key}" />
</ListBox.ItemsSource>
</ListBox>
此代码编译并执行正常。Xamarin示例 如果您在本页中寻找一个Xamarin示例(这个问题对XAML来说似乎是通用的),那么您可以试试-
<Picker x:Name="picker"
Title="Select a monkey"
TitleColor="Red">
<Picker.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>Baboon</x:String>
<x:String>Capuchin Monkey</x:String>
<x:String>Blue Monkey</x:String>
<x:String>Squirrel Monkey</x:String>
<x:String>Golden Lion Tamarin</x:String>
<x:String>Howler Monkey</x:String>
<x:String>Japanese Macaque</x:String>
</x:Array>
</Picker.ItemsSource>
</Picker>
狒狒
卷尾猴
蓝猴
松鼠猴
金狮狨
吼猴
日本猕猴
从-
这使用了Picker作为示例,但是ItemsSource语法基于外部控件是可互换的,如下所示-
<ListView>
<ListView.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>mono</x:String>
<x:String>monodroid</x:String>
<x:String>monotouch</x:String>
<x:String>monorail</x:String>
<x:String>monodevelop</x:String>
<x:String>monotone</x:String>
<x:String>monopoly</x:String>
<x:String>monomodal</x:String>
<x:String>mononucleosis</x:String>
</x:Array>
</ListView.ItemsSource>
</ListView>
单声道
单机器人
单触式
单轨铁路
单发
单调的
垄断
单众数
单核细胞增多症
您希望在?
中添加哪些内容?我不明白,我想换一个?????用某种装订。为什么?那没有道理。在第一个示例中,您已经在使用绑定语法。为什么要将其转换为更详细的语法?@Vishal:我认为您错误地认为您的第一个代码片段正在设置父级ItemsControl
的ItemsSource
属性,因为intellisense工具提示是这么说的。实际上,ListBox
的ItemsSource
属性是从基类继承而来的:ListBox
派生自ItemsControl
,后者是您可以找到属性定义的地方。这就是为什么你的智能感知说它的功能,事实上,您所展示的两个语法在设置属性方面没有任何区别。@DanPuzey在将我的代码更改为接受答案的代码后,我真的知道这两个语法之间没有任何区别。-1这正是OP在第一个示例中所做的,但是在更详细的语法中。你认为关于@HighCore的问题是什么?这就是我想要的。谢谢,由于StackOverfow的一些限制,我将在9分钟内接受您的回答。com@HighCore当前位置我认为这正是OP所要求的,但我相信他们要求的理由是有缺陷的(见我对OP的评论)。