簡體   English   中英

WPF在網格上的可見性綁定

[英]Visiblity binding in WPF on a Grid

加載數據時,我想隱藏WPF控件的內容(全部包含在網格中)並顯示加載麻煩。

MainWindow.xaml:

<Grid Visibility="{Binding IsContentVisible}">
<!-- MyCustomView is hosted here -->
</Grid>

MainWindow的數據上下文是MainWindowViewModel ,它也是從ViewModelBase派生的

public class MainWindowViewModel : ViewModelBase
{}

MyCustomView.xaml:

<Grid>
<TextBox Text="{Binding Data}" />
<TextBlock>This shouldn't be visible during the 2.5 sec loading time, but it is!</TextBlock>
</Grid>

MyCustomViewModel.cs:

public class MyCustomViewModel : ViewModelBase
{
    public async void LoadData()
    {
        IsContentVisible = Visibility.Hidden;
        OnPropertyChanged("IsContentVisible");
        // Display loading.gif
        Data = await repository.LoadData();
        // Hide loading.gif
        IsContentVisible = Visibility.Visible;
        OnPropertyChanged("IsContentVisible");
    }
}

ViewModelBase.cs:

public class ViewModelBase : INotifyPropertyChanged
{
     private Visbility isContentVisible = Visibility.Visible;
     public Visbility IsContentVisible
     {
        get { return isContentVisible; }
        set { isContentVisible = value; }
     }

     protected virtual void OnPropertyChanged(string propertyName)
     {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
     }

        private ViewModelBase currentViewModel;
        public ViewModelBase CurrentViewModel
        {
            get { return currentViewModel; }
            set { SetProperty(ref currentViewModel, value); }
        }
}

repository.LoadData():

Thread.Sleep(2500);
return "some text";

LoadData()被稱為按鈕命令

我究竟做錯了什么? 如果將可見性綁定到MyCustomView的網格,則可以工作,但這不是解決方案,因為我有很多視圖,並且我只想在一個位置綁定MainWindow

你有嘗試過嗎?

private Visbility isContentVisible = Visibility.Visible;
public Visbility IsContentVisible
{
    get { return isContentVisible; }
    set 
    { 
        isContentVisible = value; 
        OnPropertyChanged("IsContentVisible");
    }
}

暫無
暫無

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

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