簡體   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