gpt4 book ai didi

c# - 带 ICommand 和 OnPropertyChanged 的​​ WPF 控件可见性

转载 作者:行者123 更新时间:2023-11-30 18:32:37 24 4
gpt4 key购买 nike

我有一个包含 3 个控件的用户窗口 - 一个“执行”按钮、一个结果控件和一个处理控件。我的目标是在按下执行后显示处理控件,然后在执行方法完成时隐藏它。

但是,当我假设处理控件会显示时它不会显示...相反,它仅在(如果)创建另一个提示用户输入的窗口的回调函数被调用时显示。

处理控件的可见性通过 BoolToVis 转换器绑定(bind)到我的 View 模型中的 bool Processing。 execute 方法在开始时将 Processing 设置为 true,然后在完成时设置为 false。 Processing 的 setter 调用 OnPropertyChanged。 我的 View 模型实现了 INotifyPropertyChanged。

    private bool _processing;
public bool Processing
{
get
{ return _processing; }
set
{
_processing = value;
this.OnPropertyChanged("Processing");
}
}

private RelayCommand _search;
public RelayCommand Search
{
get { return _search ?? (_search = new RelayCommand(p => OnSearch(), p => CanSearch())); }
}
private void OnSearch()
{
this.Processing = true;

DoWork(delegate callBack);

this.Processing = false;
}

还有一些 XAML:

    <BooleanToVisibilityConverter x:Key="BoolToVis" />

<me:ProcessingControl Visibility="{Binding Path=Processing, Converter={StaticResource ResourceKey=BoolToVis}}"/>

最佳答案

使用Task或Background Worker做DoWork,在任务或Background worker开始前设置Processing=true,任务结束时设置为false。这将使处理控制可见和隐藏。如果您在任务或后台工作人员中链接 bool Processing 的值,请确保您通过调度程序调用它

关于c# - 带 ICommand 和 OnPropertyChanged 的​​ WPF 控件可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18409844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com