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