2013-07-20 5 views
0

나는 어떤 메뉴 옵션이 클릭되었는지에 따라 "패널"을 보이거나 숨기기 위해 그룹 박스를 사용하는 Winforms 배경에서 WPF로 뛰어 들고 있습니다. 이것은 중복되는 그룹 박스를 여러 개 가지고있는 디자인 타임 (designtime)에서의 악몽이었습니다.groupbox 대신 사용할 수 있습니까?

WPF가이 문제를 해결합니까? 그룹 박스가 여전히 길입니까? 아니면 더 나은 해결책이 있습니까?

+0

더 이상 관련이 없지만 UserControls는 WinForms의 더 나은 솔루션이었을 것입니다. 별도로 설계 할 수 있습니다. –

답변

3

WPF GroupBox에는 바인딩을 통해보기 모델에서 제어 할 수있는 'Visibility'(UIElement에서 상속)라는 속성이 있습니다.

이 XAML 조각은 '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 내에서 유지할 수 있습니다.

증언 : 축소 된 가시성과 숨겨진 가시성의 차이를 이해하는 것이 중요합니다. 설명은 http://msdn.microsoft.com/en-us/library/system.windows.visibility(v=vs.110).aspx을 참조하십시오.

+0

와우 정보에 감사드립니다. WPF에 더 많이 들어가면 더 좋아집니다 ... –

관련 문제