2017-09-11 41 views
-1

我有两个列表视图并排显示相同的数据在不同的角度。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的内容能够水平滚动。

+0

你可以发布你的代码吗? – Isma

+0

尝试添加项目到网格(而不是两列) –

+0

@lsma对不起,堆栈面板似乎不适合这个,我应该使用Listbox来代替。我写了一个排序代码片段来描述我的问题。 – mituba

回答

0

将相同的样式(使用静态高度)设置为您添加到StackPanel的任何样式。

相关问题