【问题标题】:Caliburn Micro MVVM getting comboBox to display a ViewModel screenCaliburn Micro MVVM 获得组合框以显示 ViewModel 屏幕
【发布时间】:2018-03-15 21:30:52
【问题描述】:

我有一个组合框在 ViewModel 中完美地显示其中的列表,但我希望拥有它,以便在选择列表中的选定项目时触发 ViewModel 屏幕,我只希望列表中的一个执行这? 所以这就是我在 ChooseView 中的内容:

<ComboBox x:Name="CatalogName1" SelectedItem="{Binding SelectedCatalog1}" Style="{DynamicResource appComboBox}" Grid.Row="1" Grid.Column="1"  >
    </ComboBox>

在 ChooseViewModel 中:

public List<string> CatalogName1
    {
        get
        {
            return new List<string> { "New", "Replace", "Extended", "Nothing", "ShowScreen" };
        }


    }

     private string selectedCatalog1;
    public string SelectedCatalog1
    {
        get
        {
            return this.selectedCatalog1;
        }

        set
        {
            this.selectedCatalog1 = value;
            this.NotifyOfPropertyChange(() => this.SelectedCatalog1);
        }
    }

组合列表中的“ShowScreen”应显示 ShowScreenViewModel,但我已尝试使用 getter setter,但对我来说没有意义

【问题讨论】:

  • 您应该创建一个方法来检查set 中的value 是否等于ShowScreen。如果是这样,则激活您的ViewModel,否则只需设置文本,然后调用通知。
  • 我该如何使用这种方法,抱歉,我应该说我对所有这些绑定和 caliburn 都不熟悉?
  • 你的意思是如何激活你的 ViewModel 或者如何检查你是否点击了 ShowScreen?
  • 一连串的不。将您的集合属性转换为 { get;私人套装; }。每次返回一个新的集合是很糟糕的。您也没有将其绑定到 ItemsSource,那么您如何期望组合框中会显示任何内容?
  • @arcticwhite 如何检查它是否被点击,我猜 itemsource 因为我已经选择了项目,没有一个示例显示如何显示新屏幕。如果我有单击按钮,它将是 和 public void ShowScreen() { ActivateItem(ShowScreenViewModel.getinstance()); }

标签: mvvm combobox caliburn.micro


【解决方案1】:

好的,这就是我解决问题的方法...

private string selectedCatalog1;
    public string SelectedCatalog1
    {
        get
        {
            return selectedCatalog1;
        }
        set
        {
            selectedCatalog1 = value;
            ValidateValue(value);
            NotifyOfPropertyChange(() => SelectedCatalog1);
        }
    }
    private void ValidateValue(string s)
    {
        if (s == "ShowScreen")
        {
            ActivateItem(new ShowScreenViewModel());
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多