如何基于其他进程在 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 标志已关闭,并在方法结束时再次打开它。
我有一种情况,在完成某些过程时我必须抖动组合框。
此代码段属于组合框 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 标志已关闭,并在方法结束时再次打开它。