同じデータを異なる視点で表示する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の内容が必要なためです。
コードを掲載できますか? – Isma
代わりにグリッドに項目を追加してみてください(2列で) –
@lsma申し訳ありませんが、スタックパネルはこれに適していないようですが、代わりにリストボックスを使用してください。私は私の質問を記述するためにソートコードスニペットを書いた。 – mituba