如何在XAML中设置ItemsSource?

时间:2014-03-05 16:02:22

标签: wpf xaml

我按如下方式设置了ListBox的ItemsSource:

<ListBox ItemsSource="{Binding abc}" />

我想要什么

<ListBox>
    <listBox.ItemsSource>
        ?????????????
    <listBox.ItemsSource>
</ListBox>

4 个答案:

答案 0 :(得分:8)

<Window xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">

<ListBox>
<ListBox.ItemsSource>
    <x:Array Type="sys:String">
        <sys:String>1st item</sys:String>
        <sys:String>2nd item</sys:String>
    </x:Array>
<ListBox.ItemsSource>
</ListBox>

</Window>

答案 1 :(得分:4)

<ListBox>
    <listBox.ItemsSource>
        <Binding Path = "abs" />
    <listBox.ItemsSource>
</ListBox>

答案 2 :(得分:1)

@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>

出于技术原因,您可能希望将CVS资源的范围限制为仅有问题的ListBox。

如果在属性

中记下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_Key资源键,因为资源已在代码中稍后定义。您需要在ListBox&#39;中引用它之前定义资源。 ItemsSource绑定。像这样:

    <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>

此代码编译并执行OK。

答案 3 :(得分:0)

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>

从-

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/picker/populating-itemssource#populating-a-picker-with-data

以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>