我有一个ListView,希望对其进行上下排序。这是xaml
<ListView x:Name="ListRegister" ItemsSource="{Binding Registrations}" HasUnevenRows="True" SelectionMode="Single">
<ListView.Behaviors>
<b:EventToCommandBehavior EventName="ItemTapped" Command="{Binding CommandGoDetail}" EventArgsParameterPath="Item" />
</ListView.Behaviors>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Frame >
<StackLayout>
<Label Text="{Binding Date}" Style="{StaticResource registerItemDateText}"/>
</StackLayout>
</Frame>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
以及“按钮”(在我的SortUp()和sortDown()函数之间交替)。该按钮将文本更改为“上”和“下”,因此我知道它可以在屏幕上使用。
<TapGestureRecognizer Command="{Binding CommandSort}"/>
这些功能似乎起作用
Registrations.Sort((x, y) => DateTime.Compare(y.Date, x.Date));
Registrations.Sort((x, y) => DateTime.Compare(x.Date, y.Date));
当调用这些功能之一时,列表可以正确地向上或向下排序,但是当按下按钮时,列表不会自动更新为其他排序。
我在哪里弄糟?
编辑:
CommandSort代码
private void HandleSort(Registration obj)
{
if(SortRecent)
{
SortRecent = false;
SortText = "Plus ancien";
SortImageSource = "lightDownArrow";
SortDown();
}
else
{
SortRecent = true;
SortText = "Plus récent";
SortImageSource = "lightUpArrow";
SortUp();
}
}
注册类型:
List<Registration> Registrations
具有字符串名称和DateTime日期的注册
答案 0 :(得分:1)
您需要检查什么是注册数据。它必须是一个可观察的集合,以便向UI通知对模型所做的更改。如果不是,您将需要手动更新列表视图以反映对模型所做的更改,在这种情况下为新的排序方向。您可以使用:
ListView.BeginRefresh(); & ListView.EndRefresh();
强制更新列表视图。但强烈建议将您的列表更改为可观察的集合。