2015-05-19 59 views
0

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

有没有样品?

我的想法是只有东西要隐藏不需要的控制像VisibilityHeight/Width = 0

+0

至于我遇到了问题,您需要通过Visibility = Collapse隐藏不需要的控件。如果你把它隐藏起来或者Height/width = 0,它会在UI中占用一定的空间。 – Nazmul

+1

就我个人而言,我会使用一个''绘制控件,并根据您的标准换出ContentTemplate属性。这很容易通过'Trigger'完成,或者如果您愿意,也可以使用代码隐藏完成 – Rachel

回答

0

组合框的可见性通常可以在运行时使用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 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> 
相关问题