早くて簡単。現在のコードをそのままにします。次に、ViewModelにリストを1つだけ設定すると、同じリストを返すが希望の順序で並べ替えられるN個の異なる読み取り専用プロパティ(Nはタブの数)を設定できます。
事は:
各TabItemに異なるListViewが含まれるようにしたくない
しかし、それはまさにあなたがしていることです。各TabItem内にソートされた異なるリストがあります。
例
意見:
<TabControl>
<TabItem>
<ListView ItemsSource="{Binding SortedByX}" />
</TabItem>
<TabItem>
<ListView ItemsSource="{Binding SortedByY}" />
</TabItem>
<TabItem>
<ListView ItemsSource="{Binding SortedByZ}" />
</TabItem>
</TabControl>
ViewModel:
public List<The type of your list items> List { get; set; }
public List<The type of your list items> SortedByX
{
get
{
return List.Sort(iComparer);
}
}
// Or using LINQ
public List<The type of your list items> SortedByY
{
get
{
return List.OrderBy....
}
}