2017-09-11 1 views
-1

同じデータを異なる視点で表示する2つのリストビューが並んでいます。WPF同期アイテムの位置とサイズを2つのリストビューの間で表示する

データエントリが追加されるたびに、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は左リストのListViewItemよりも多くのスペースを必要としますが、同じ高さにする必要があります。

グリッドを使用することはできません。これは、水平方向にスクロールできるように、適切なListViewの内容が必要なためです。

+0

コードを掲載できますか? – Isma

+0

代わりにグリッドに項目を追加してみてください(2列で) –

+0

@lsma申し訳ありませんが、スタックパネルはこれに適していないようですが、代わりにリストボックスを使用してください。私は私の質問を記述するためにソートコードスニペットを書いた。 – mituba

答えて

0

StackPanelsに追加するものと同じスタイリング(静的な高さのもの)を設定します。

関連する問題