我在 C# 中有一个列表列表,其中每个列表包含 3 个整数
List<List<int>> Data = new List<List<int>>();
data.Add(new List<int>{ 1, 2, 3});
现在在 WPF 中,我有一个列表框,我想将这些值绑定(bind)到其中。下面的代码是我现在的代码,但正如预期的那样,它说没有“项目”属性。
<ListBox ItemsSource="{Binding Data}" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Item1}" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Item2}" />
<TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding Item3}" />
</Grid>
</DataTemplate>
</ListBox>
有人可以解释我必须做什么才能让列表框中显示这些数字吗?
提前致谢。
最佳答案
您需要在 ListView
中索引您的绑定(bind)项目模板,像这样:
<ListBox ItemsSource="{Binding Data}" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding [0]}" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding [1]}" />
<TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding [2]}" />
</Grid>
</DataTemplate>
</ListBox>
但是,如果您计划在每个 List<int>
中包含动态数量的元素, 你可以再放一个 ListView
在原来ListView
.
此外,此链接:https://web.archive.org/web/20120814100526/http://msdn.microsoft.com/en-us/library/ms742451.aspx如果您遇到绑定(bind)路径问题,它真的很方便!
关于c# - 如何将列表列表绑定(bind)到 WPF 中的列表框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56138212/