在 ComboBox 中使用 Button 不会进行选择
Using Button in ComboBox does not make a selection
在下面,组合框的下拉列表显示了一个“年”(字符串)列表(绑定的“TrialList”的内容)以及一个添加另一年的按钮。它有效,按钮触发命令,但当发生这种情况时组合框不会折叠,这会锁定随后对绑定列表 TrialList 所做的更改。
在 MVVM 中,如何在按下按钮时强制执行“选择更改”?
<ComboBox>
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={x:Static local:Data.TheAcademicUnit}, Mode=TwoWay, Path=TrialList}"/>
<ComboBoxItem>
<Button Content="Add New Year" Command="{Binding ShowNewAcademicYearPanelCommand}"/>
</ComboBoxItem>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
尝试:
<Button Focusable="False" Content=...
您可以将 ComboBox
的 IsDropDownOpen
属性 绑定到您在 false
中设置为 false
的视图模型的源 属性 =15=] 命令方法:
<ComboBox IsDropDownOpen="{Binding IsOpen}">
查看模型:
private bool _isOpen;
public bool IsOpen
{
get { return _isOpen; }
set { _isOpen = value; NotifyPropertyChanged(); }
}
如果你想在调用命令时进行选择,你应该以相同的方式绑定并设置 ComboBox
的 SelectedItem
属性。
在下面,组合框的下拉列表显示了一个“年”(字符串)列表(绑定的“TrialList”的内容)以及一个添加另一年的按钮。它有效,按钮触发命令,但当发生这种情况时组合框不会折叠,这会锁定随后对绑定列表 TrialList 所做的更改。
在 MVVM 中,如何在按下按钮时强制执行“选择更改”?
<ComboBox>
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={x:Static local:Data.TheAcademicUnit}, Mode=TwoWay, Path=TrialList}"/>
<ComboBoxItem>
<Button Content="Add New Year" Command="{Binding ShowNewAcademicYearPanelCommand}"/>
</ComboBoxItem>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
尝试:
<Button Focusable="False" Content=...
您可以将 ComboBox
的 IsDropDownOpen
属性 绑定到您在 false
中设置为 false
的视图模型的源 属性 =15=] 命令方法:
<ComboBox IsDropDownOpen="{Binding IsOpen}">
查看模型:
private bool _isOpen;
public bool IsOpen
{
get { return _isOpen; }
set { _isOpen = value; NotifyPropertyChanged(); }
}
如果你想在调用命令时进行选择,你应该以相同的方式绑定并设置 ComboBox
的 SelectedItem
属性。