Wpf 使用组合框中的按钮不会进行选择

Wpf 使用组合框中的按钮不会进行选择,wpf,mvvm,wpf-controls,Wpf,Mvvm,Wpf Controls,在下文中,组合框的下拉列表显示“年份”(字符串)(绑定的“TrialList”的内容)列表以及添加另一年的按钮。它可以工作,按钮触发命令,但当发生这种情况时,组合框不会折叠,这将锁定随后对绑定列表TrialList所做的更改 在MVVM中,按下按钮时如何强制“选择更改” <ComboBox> <ComboBox.ItemsSource> <CompositeCollection> <CollectionCo

在下文中,组合框的下拉列表显示“年份”(字符串)(绑定的“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>

试试:


您可以将
组合框的
IsDropDownOpen
属性绑定到视图模型的源属性,该属性在命令的
执行
方法中设置为
false

<ComboBox IsDropDownOpen="{Binding IsOpen}">

如果要在调用命令时进行选择,则应以相同的方式绑定并设置组合框的
SelectedItem
属性。

是否对
showNewPanelCommand
GUI线程友好?请向我们展示该方法及其作用。
<ComboBox IsDropDownOpen="{Binding IsOpen}">
private bool _isOpen;
public bool IsOpen
{
    get { return _isOpen; }
    set { _isOpen = value; NotifyPropertyChanged(); }
}