如何基于其他进程在 WPF 中禁用和启用组合框?

How do I disable and enable comboBox in WPF based on some other process?

我有一种情况,在完成某些过程时我必须抖动组合框。

此代码段属于组合框 XAML (ItemSearchView.XAML)..

    <StackPanel Margin="2.5">
        <Label Content="{x:Static local:StringResources.LBL_FILL_LOC}" Target=" 
        {Binding ElementName=CboFillLoc}"/>
        <ComboBox x:Name="CboFillLoc" IsEnabled="{Binding IsComboEnabled}"
         ItemsSource="{Binding Locations}" SelectedItem="{Binding 
         SelectedLocation, Mode=TwoWay}" Padding="2.5"/>
    </StackPanel>

这是组合框需要在开始时抖动并且需要在结束时启用的方法。


    private async void FetchItems()
    {
        try
        {
             do something
        }
        catch
        {
    
        }
        finally
        {
    
        }
    
    }

这样做的目的是每当用户手动搜索项目时,我必须限制用户执行其他过程,直到所有项目都正确加载。

我无法实现这一点,因为我对 WPF 还很陌生。 任何建议或帮助将不胜感激。

希望我理解正确。您可以声明一个布尔值 属性 并将其绑定到 ComboBox 的 IsEnabled 属性。

例如,在您的 ViewModel

private bool _isComboEnabled;
public bool IsComboEnabled
{
  get=>_isComboEnabled;
  set
  {
    if(_isComboEnabled==value) return;
    _isComboEnabled = value;
    NotifyOfPropertyChanged();
  }
}

在 Xaml 中,您现在可以

<ComboBox x:Name="cboFillLoc" IsEnabled={Binding IsComboEnabled}.../>

现在每次要调用 SearchItemManually 方法时,您可以确保 ComboEnabled 标志已关闭,并在方法结束时再次打开它。