2013-07-20 3 views
0

Я погружаюсь в WPF, исходя из фона Winforms, где я использовал групповые ящики, чтобы показывать и скрывать «панели» в зависимости от того, какие параметры меню были нажаты. Это было немного кошмаром во время разработки, имеющим несколько перекрывающихся групповых ящиков.Альтернатива групповому боксу?

Помогает ли WPF решить эту проблему? Является ли групповой бокс еще способ? Или есть лучшие решения?

+0

Не то, чтобы это было актуально, но UserControls было бы лучшим решением в WinForms. Вы можете проектировать их отдельно. –

ответ

3

WPF GroupBox имеет свойство «Видимость» (унаследованное от UIElement), которое может управляться в View Model посредством привязки.

Этот фрагмент Xaml показывает визуальность Groupbox в связывался к собственности под названием 'MyGroupBoxVisibility' ...

<Grid> 
    <GroupBox Header="This and that" Visibility="{Binding MyGroupBoxVisibility}" Background="Plum"/> 
</Grid> 

взгляд образец модели, которая содержит 'MyGroupBoxVisibility' является ...

public class ViewModel : INotifyPropertyChanged 
{ 
    public ViewModel() 
    { 
     HideTheGroupBox(); 
    } 
    private void ShowTheGroupBox() 
    { 
     MyGroupBoxVisibility = Visibility.Visible; 
    } 
    private void HideTheGroupBox() 
    { 
     MyGroupBoxVisibility = Visibility.Collapsed; 
    } 
    private Visibility _myGroupBoxVisibility; 
    public Visibility MyGroupBoxVisibility 
    { 
     [DebuggerStepThrough] 
     get { return _myGroupBoxVisibility; } 
     [DebuggerStepThrough] 
     set 
     { 
      if (value != _myGroupBoxVisibility) 
      { 
       _myGroupBoxVisibility = value; 
       OnPropertyChanged("MyGroupBoxVisibility"); 
      } 
     } 
    } 
    #region INotifyPropertyChanged Implementation 
    public event PropertyChangedEventHandler PropertyChanged; 
    protected virtual void OnPropertyChanged(string name) 
    { 
     var handler = System.Threading.Interlocked.CompareExchange(ref PropertyChanged, null, null); 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 
    #endregion 
} 

Этот образец имеет два метода в нем, которые переключают видимость взад и вперед. Вы можете использовать эту технику, чтобы перенести материал WinForms в WPF, а также сохранить его в MVVM.

ETA: Обратите внимание, что очень важно понять разницу между сложенными и скрытыми видимостьми. Пожалуйста, см. http://msdn.microsoft.com/en-us/library/system.windows.visibility(v=vs.110).aspx для объяснения

+0

Ничего себе, спасибо за информацию. Чем больше я попадаю в WPF, тем больше я его люблю ... –

Смежные вопросы