如何在Caliburn.Micro.中获得下拉选择的CanXXX行为

本文关键字:选择 行为 CanXXX Caliburn Micro | 更新日期: 2023-09-27 18:27:09

如果我有一个名为Execute的按钮,我可以编写一个方法来控制该按钮的可点击性:

public bool CanExecute()
{
    return !string.IsNullOrWhiteSpace(this.SelectedCatalogName) && !string.IsNullOrWhiteSpace(this.selectedCommandName);
}

类似地,我有一个名为SelectedCommand的下拉列表,在选择另一个下拉列表之前,它应该被禁用:

private BindableCollection<string> catalogNames;
public BindableCollection<string> CatalogNames
{
    get
    {
        return this.catalogNames;
    }
}
private string selectedCatalog;
public string SelectedCatalogName
{
    get
    {
        return this.selectedCatalog;
    }
    set
    {
        this.selectedCatalog = value;
        this.NotifyOfPropertyChange(() => this.SelectedCatalogName);
    }
}
// -----------------------------------------------------------------
// --> Can I do this or the equivalent?
// -----------------------------------------------------------------
public bool CanSelectCatalogName()
{
    return !string.IsNullOrWhiteSpace(this.SelectedCatalogName);
}

注:以上评论中的问题。

如何在Caliburn.Micro.中获得下拉选择的CanXXX行为

没有内置的约定来支持这一点,但您可以只做一个简单的绑定:

<ComboBox x:Name="SelectedCatalog" IsEnabled="{Binding CanSelectCatalogName}" />