0
我有一個ComboBox
有兩個值和一個自定義控件作爲菜單的一部分。如果ComboBox
更改其值,是否可以將此控件更改爲另一個(簡單按鈕)以代替運行時的沮喪控制?在運行時切換兩個不同的控件
有沒有樣品?
我的想法是隻有東西要隱藏不需要的控制像Visibility
或Height
/Width
= 0
我有一個ComboBox
有兩個值和一個自定義控件作爲菜單的一部分。如果ComboBox
更改其值,是否可以將此控件更改爲另一個(簡單按鈕)以代替運行時的沮喪控制?在運行時切換兩個不同的控件
有沒有樣品?
我的想法是隻有東西要隱藏不需要的控制像Visibility
或Height
/Width
= 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>
至於我遇到了問題,您需要通過Visibility = Collapse隱藏不需要的控件。如果你把它隱藏起來或者Height/width = 0,它會在UI中佔用一定的空間。 – Nazmul
就我個人而言,我會使用一個''繪製控件,並根據您的標準換出ContentTemplate屬性。這很容易通過'Trigger'完成,或者如果您願意,也可以使用代碼隱藏完成 –
Rachel