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
属性。使用触发器
可以轻松完成此操作,如果您愿意,也可以使用代码隐藏来完成此操作