在运行时切换两个不同的控件

时间:2015-05-19 15:49:46

标签: wpf

我有ComboBox有两个值,自定义控件作为菜单的一部分。如果ComboBox更改其值,是否可以在运行时将此控件更改为另一个(简单按钮)?

有样品吗?

我的想法只是隐藏不需要的控件,例如VisibilityHeight / Width = 0.

1 个答案:

答案 0 :(得分:0)

ComboBox的可见性通常可以使用BooleanToVisibilityConverter在运行时设置。

例如,假设您的组合框绑定到产品列表。如果没有产品,您可以隐藏组合框。

public class SampleViewModel : INotifyPropertyChanged 
{
     public event EventHandler<PropertyChangedEventArgs> PropertyChanged;

     public IEnumerable<Product> Products { get; set; }

     public bool ShowProducts { get { return Products.Any(); } }
}

您可以将BooleanToVisibilityConverter添加到Window的资源中,然后绑定到它。

<Window xmlns:local="clr-namespace:WpfApplication1">
  <Window.DataContext>
    <local:SampleViewModel />
  </Window.DataContext>
  <Window.Resources>
    <local:BooleanToVisibilityConverter x:Name="BooleanToVisibilityConverter" />
  </Window.Resources>
  <ComboBox ItemsSource="{Binding Products}"
            Visibility="{Binding ShowProducts, Converter={StaticResource BooleanToVisibilityConverter}}" />
</Window>