簡體   English   中英

具有ICommand和OnPropertyChanged的WPF控件可見性

[英]WPF Control Visibility w/ ICommand & OnPropertyChanged

我有一個帶有3個控件的用戶窗口 - 一個'執行'按鈕,一個結果控件和一個處理控件。 我的目標是在按下execute后顯示處理控件,然后在execute方法完成時隱藏它。

但是,當我假設處理控件時,處理控件不顯示...而是僅顯示何時(如果)調用創建另一個提示用戶輸入的窗口的回調函數。

處理控件的可見性通過BoolToVis轉換器綁定到我的viewmodel中的bool Processing execute方法在開始時將Processing設置為true,然后在完成時將其設置為false。 Processing的setter調用OnPropertyChanged. 我的視圖模型實現了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,在啟動任務或后台工作程序之前設置Processing = true,並在任務結束時將其設置為false。 這將使Processing控件可見並隱藏。 如果您在任務或后台工作人員中鏈接bool處理的值,請確保通過調度程序調用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM