Wpf 如何在XAML中设置ItemsSource?

Wpf 如何在XAML中设置ItemsSource?,wpf,xaml,Wpf,Xaml,我已将列表框的ItemsSource设置如下: <ListBox ItemsSource="{Binding abc}" /> 我想要什么 <ListBox> <listBox.ItemsSource> ????????????? <listBox.ItemsSource> </ListBox> ????????????? 第一项 第二项 @HighCore、@DanPazey和@Visha

我已将列表框的ItemsSource设置如下:

<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的评论)。