2015-05-19 57 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> 
相關問題