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 для объяснения
Не то, чтобы это было актуально, но UserControls было бы лучшим решением в WinForms. Вы можете проектировать их отдельно. –