仅在从组合框中选择项目时显示Treeview

时间:2013-06-18 21:54:32

标签: wpf mvvm

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

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

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

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

        }

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

由于

1 个答案:

答案 0 :(得分: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);
}

然后,您可以使用提供的TreeView绑定Visibility BooleanToVisibilityConverter媒体资源:

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