【问题标题】:Show Treeview only on item select from combobox仅在从组合框中选择的项目上显示树视图
【发布时间】:2013-06-15 07:19:26
【问题描述】:

我有一个 WPF 应用程序/MVVM 模式,它有一个组合框和一个树视图控件。 我想做的是仅当我从组合框中选择一个项目时才显示树视图控件。

例如:我有一个名为 SelectedTransactionName 的属性

      private string _selectedTransactionWsName;
        public string SelectedTransactionName
        {
            set
            {
                if (_selectedTransactionWsName == value) return;
                this._selectedTransactionWsName = value;

                InitializaMessageElement();
            }
            get
            {
                return this._selectedTransactionWsName;
            }

        }

我的 InitializaMessageElement 方法将显示与所选项目匹配的事务名称。但是现在我不想仅在我在组合框上进行选择时才在页面加载时显示树视图。 在页面加载时,我希望我的窗口只显示组合框。

谢谢

【问题讨论】:

    标签: wpf mvvm


    【解决方案1】:

    您的视图模型可以包含一个计算布尔属性,您的TreeView 将其Visibility 属性绑定到该属性,例如:

    public bool IsTransactionNameSelected
    {
        get
        {
            return !string.IsNullOrEmpty(_selectedTransactionWsName);
        }
    }
    

    然后您可以在SelectedTransactionName 的设置器中通知属性更改:

    set
    {
       if (_selectedTransactionWsName == value) return;
       this._selectedTransactionWsName = value;
       InitializaMessageElement();
    
       this.NotifyOfPropertyChanged(() => this.IsTransactionNameSelected);
    }
    

    然后您可以使用提供的BooleanToVisibilityConverter 绑定您的TreeView Visibility 属性:

    <TreeView 
        Visibility="{Binding IsTransactionNameSelected, 
                     Converter={StaticResource BooleanToVisibilityConverter}" ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2013-10-15
      • 2013-12-04
      • 1970-01-01
      • 2013-09-21
      相关资源
      最近更新 更多