如何在XAML中设置ItemsSource?

guz6ccqo  于 2023-11-14  发布在  其他
关注(0)|答案(5)|浏览(131)

我设置了ListBox的ItemsSource,如下所示:

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

字符串

我想要的

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

hwazgwia

hwazgwia1#

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

字符串

gkn4icbw

gkn4icbw2#

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

字符串

2g32fytz

2g32fytz3#

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://learn.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>

ztyzrc3y

ztyzrc3y4#

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


此代码编译并执行正常。

bvpmtnay

bvpmtnay5#

对于WinUI 3
我们在WinUI 3中没有x:Array。但我们可以创建类似的东西:

namespace SampleApp.Helpers;

public class XamlList : List<object>
{
}

字符串
这样使用它:

<ItemsRepeater>
    <ItemsRepeater.ItemsSource>
        <helpers:XamlList>
            <x:String>Item A</x:String>
            <x:String>Item B</x:String>
            <x:String>Item C</x:String>
        </helpers:XamlList>
    </ItemsRepeater.ItemsSource>
</ItemsRepeater>

相关问题