2015-05-19 3 views
0

У меня есть ComboBox с двумя значениями и настраиваемый элемент управления в составе меню. Можно ли изменить этот элемент управления на другую (простую кнопку) вместо утилизованного элемента управления во время выполнения, если значение ComboBox изменит его значение?Переключение между двумя различными элементами управления во время выполнения

Есть ли образцы?

Моя идея заключается в том, чтобы скрыть только не нужны управления чем-то вроде Visibility или Height/Width = 0.

+0

Насколько я дошел до креста, вам необходимо скрыть не нужные элементы управления с помощью Visibility = Collapse. Если вы сделаете это скрытым или Height/width = 0. Это займет пространство в пользовательском интерфейсе. – Nazmul

+1

Лично я бы нарисовал элемент управления с помощью '' и заменил свойство ContentTemplate на основании ваших критериев. Это легко сделать с помощью «Триггера» или может быть сделано с кодовым отставанием, если вы предпочитаете – Rachel

ответ

0

Видимость ComboBox обычно может быть установлен во время выполнения с помощью BooleanToVisibilityConverter.

Например, предположим, что ваша Combo Box привязана к списку продуктов. Когда нет продуктов, вы хотите скрыть Combo Box.

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> 
Смежные вопросы