0

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

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

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

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

        }

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

谢谢

4

1 回答 1

1

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

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

然后,您可以在 setter 中通知属性更改SelectedTransactionName

set
{
   if (_selectedTransactionWsName == value) return;
   this._selectedTransactionWsName = value;
   InitializaMessageElement();

   this.NotifyOfPropertyChanged(() => this.IsTransactionNameSelected);
}

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

<TreeView 
    Visibility="{Binding IsTransactionNameSelected, 
                 Converter={StaticResource BooleanToVisibilityConverter}" ...
于 2013-06-18T22:03:26.697 回答