我在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>
但这没用...
答案 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'答案中添加一个解释。
要使其正常运行,您需要做两件事:
具有Tour
属性的类。
如:
private ObservableCollection<DutyDay> tour;
public ObservableCollection<DutyDay> Tour
{
get
{
return tour;
}
set
{
tour = value;
OnPropertyChanged(nameof(Tour));
};
}
DataContext
的{{1}}(或ListBox层次结构中的任何控件)然后将您的代码更改为:
ListBox
您在Xaml中尝试执行的操作没有任何意义。您写道:
<ListBox x:Name="listBoxDutyDays" ItemsSource="{Binding tour}">
代码中的内容类似于:
<ListBox x:Name="listBoxDutyDays">
<ListBox.DataContext>
<ListBox ItemsSource="{Binding tour}"/>
</ListBox.DataContext>