在XAML中实现`.ItemsSource`方法

时间:2019-01-11 18:30:37

标签: c# wpf xaml

我在WPF XAML中有一个简单的ListBox,使用C#中的以下一行代码将名为tour的列表中的项分配给该列表框:

listBoxDutyDays.ItemsSource = tour;

除了XAML,我想做同样的事情。

那是什么样子:

<ListBox x:Name="listBoxDutyDays">
     <ListBox.ItemTemplate>
         <DataTemplate>
             <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Label Grid.Column="0" Content="{Binding Day}"/>
                <Label Grid.Column="1" Content="{Binding Date}"/>
            </Grid>
        </DataTemplate>
     </ListBox.ItemTemplate>
</ListBox>

XAML中的代码看起来如何?

我已经相应地尝试过:

<ListBox x:Name="listBoxDutyDays">
        <ListBox.DataContext>
            <ListBox ItemsSource="{Binding tour}"/>
        </ListBox.DataContext>

但这没用...

2 个答案:

答案 0 :(得分:0)

尝试这样

<ListBox x:Name="listBoxDutyDays" ItemsSource="{Binding tour}">
 <ListBox.ItemTemplate>
     <DataTemplate>
         <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Label Grid.Column="0" Content="{Binding Day}"/>
            <Label Grid.Column="1" Content="{Binding Date}"/>
        </Grid>
    </DataTemplate>
 </ListBox.ItemTemplate>

答案 1 :(得分:0)

我想在'Bhuvanesh Jay'答案中添加一个解释。

要使其正常运行,您需要做两件事:

  1. 具有Tour属性的类。 如:

    private ObservableCollection<DutyDay> tour;
    
    public ObservableCollection<DutyDay> Tour
    {
        get
        {
            return tour;
        }
        set
        {
            tour = value;
            OnPropertyChanged(nameof(Tour));
        };
    }
    
  2. 将该类设置为DataContext的{​​{1}}(或ListBox层次结构中的任何控件)

然后将您的代码更改为:

ListBox

您在Xaml中尝试执行的操作没有任何意义。您写道:

<ListBox x:Name="listBoxDutyDays" ItemsSource="{Binding tour}">

代码中的内容类似于:

<ListBox x:Name="listBoxDutyDays">
    <ListBox.DataContext>
        <ListBox ItemsSource="{Binding tour}"/>
    </ListBox.DataContext>