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

时间:2012-03-09 01:46:32

标签: c# caliburn.micro

如果我有一个名为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);
}

注意:上面评论中的问题。

1 个答案:

答案 0 :(得分:2)

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

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