我有两个并排的列表视图,以不同的视角显示相同的数据。
每次添加数据条目时,我都会在同一索引的两个ListView中添加一个项目。
我希望每个ListView中的相同项具有相同的高度。但是它们的MeasureOverride是分开调用的。我该如何解决这个问题?
=========================== 这是示例代码。
MainWindow.xaml
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0" x:Name="leftList">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<ScrollViewer>
<ListBox Grid.Column="1" x:Name="rightList">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Desc}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
</Grid>
MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
AddPerson(new Person() { Name = "Ali", Desc = "123A" });
AddPerson(new Person() { Name = "Akram", Desc = "456X" });
AddPerson(new Person() { Name = "Salman", Desc = "Very long description ........................................" });
}
void AddPerson(Person person)
{
leftList.Items.Add(person);
rightList.Items.Add(person);
}
}
class Person
{
public string Name { get; set; }
public string Desc { get; set; }
}
实际上,ListViewItem更复杂,我必须为它们编写自定义控件。
在大多数情况下,右侧列表的ListViewItem占用的空间比左侧列表的空间大,但我需要保持它们具有相同的高度。
我无法使用Grid执行此操作,因为我需要正确的ListView内容才能够水平滚动。
答案 0 :(得分:0)
将相同的样式(具有静态高度)设置为您添加到StackPanels的任何样式。