繁体   English   中英

Xamarin.Forms ChangeCanExecute没有使用正确的参数

[英]Xamarin.Forms ChangeCanExecute not using the right parameters

我有一个在UWP中运行的Xamarin.Forms应用程序,其中使用DLToolkit.Forms.Controls.FlowListView(来自daniel-luberda )来显示带有按钮的某种网格视图。

使用的Mvvm框架是FreshMvvm。

这是我在XAML中的gridview:

<c:FlowListView SeparatorVisibility="None" 
    HasUnevenRows="False" FlowColumnMinWidth="100" 
    FlowItemsSource="{Binding Boards}">
    <c:FlowListView.FlowColumnTemplate>
        <DataTemplate>
            <Button  Text="{Binding Number}" 
                Command="{Binding Path=BindingContext.SelectBoardCommand, Source={x:Reference Name=SalesPage}}" 
                CommandParameter="{Binding .}" />
        </DataTemplate>
    </c:FlowListView.FlowColumnTemplate>
</c:FlowListView>

结果如下(我简化了有关颜色和大小的XAML):

网格视图

我的gridview中的按钮绑定到带有参数的命令。 每次单击按钮时,我都想禁用它。

我的命令如下所示:

    private ICommand _selectBoardCommand;

    [DoNotNotify]
    public ICommand SelectBoardCommand => _selectBoardCommand = new Command<BoardModel>(board =>
    {
        board.NotUsed = false;
        ((Command<BoardModel>) _selectBoardCommand).ChangeCanExecute();
    }, board => board != null && board.NotUsed);

按下按钮会调用带有正确参数的命令(电路板。绑定到命令文本的编号是我在命令中获得的编号)。 但是,当调用“ CanChangeExecute”以禁用命令时,我无法将选定的板作为参数传递。

在命令中,当使用

((Command<BoardModel>) _selectBoardCommand).ChangeCanExecute();

它称为功能

board => board != null && board.NotUsed

与列表中的最新项。

此外,我需要在ChangeCanExecute中放置“ board!= null”,因为很多时候此Func都使用null值。

任何想法?

我认为有两种方法可以解决您的问题:
1)移动SelectBoardCommand内部BoardModel 它不需要参数,并且可以分别在每个模型上运行;
2)将Button Enabled属性绑定到NotUsed属性。 在这种情况下,用户将根本无法从UI调用SelectBoardCommand

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM