Wpf 在运行时在两个不同控件之间切换

Wpf 在运行时在两个不同控件之间切换,wpf,Wpf,我有一个带有两个值的组合框和一个自定义控件作为菜单的一部分。如果组合框更改了其值,是否可以在运行时将此控件更改为另一个(简单按钮)以代替已停用的控件 有样品吗 我的想法是只隐藏一些不需要的控件,比如可见性或高度/宽度=0 组合框的可见性通常可以在运行时使用 例如,假设您的组合框绑定到一个产品列表。当没有产品时,您希望隐藏组合框 public class SampleViewModel : INotifyPropertyChanged { public event EventHandl

我有一个带有两个值的组合框和一个自定义控件作为菜单的一部分。如果
组合框
更改了其值,是否可以在运行时将此控件更改为另一个(简单按钮)以代替已停用的控件

有样品吗


我的想法是只隐藏一些不需要的控件,比如
可见性
高度
/
宽度
=0

组合框的可见性通常可以在运行时使用

例如,假设您的组合框绑定到一个产品列表。当没有产品时,您希望隐藏组合框

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

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

     public bool ShowProducts { get { return Products.Any(); } }
}
公共类SampleViewModel:INotifyPropertyChanged
{
公共事件EventHandler属性已更改;
公共IEnumerable乘积{get;set;}
public bool ShowProducts{get{return Products.Any();}
}
您可以将BooleanToVisibilityConverter添加到窗口的资源中,然后绑定到它

<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>


据我所知,您需要通过可见性=折叠来隐藏不需要的控件。如果将其隐藏或高度/宽度=0。它将占用UI中的空间。我个人会使用
绘制控件,并根据您的条件交换
ContentTemplate
属性。使用
触发器
可以轻松完成此操作,如果您愿意,也可以使用代码隐藏来完成此操作