WPF同步项目位置和两个列表视图之间的大小

时间:2017-09-11 09:58:30

标签: wpf

我有两个并排的列表视图,以不同的视角显示相同的数据。

每次添加数据条目时,我都会在同一索引的两个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内容才能够水平滚动。

1 个答案:

答案 0 :(得分:0)

将相同的样式(具有静态高度)设置为您添加到StackPanels的任何样式。