快速简单。让代码与现在一样。然后在您的ViewModel上只有一个列表,并且您可以拥有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>
视图模型:
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....
}
}
“所以,我不希望每个TabItem的包含不同的ListView” - 为什么不呢?不应该有任何开销,所以保持简单和直接。 –
不知道我是否理解你的问题。但是您可以将ListView放入DataTemplate并将ContentControl放入TabItem中,现在ContentControl只使用创建的DataTemplate作为其ContentTemplate。这样你可以重用listview的定义。显然它不可能是一样的。 – dowhilefor
@HenkHolterman你确定吗? – gliderkite