【发布时间】: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