나는 어떤 메뉴 옵션이 클릭되었는지에 따라 "패널"을 보이거나 숨기기 위해 그룹 박스를 사용하는 Winforms 배경에서 WPF로 뛰어 들고 있습니다. 이것은 중복되는 그룹 박스를 여러 개 가지고있는 디자인 타임 (designtime)에서의 악몽이었습니다.groupbox 대신 사용할 수 있습니까?
WPF가이 문제를 해결합니까? 그룹 박스가 여전히 길입니까? 아니면 더 나은 해결책이 있습니까?
나는 어떤 메뉴 옵션이 클릭되었는지에 따라 "패널"을 보이거나 숨기기 위해 그룹 박스를 사용하는 Winforms 배경에서 WPF로 뛰어 들고 있습니다. 이것은 중복되는 그룹 박스를 여러 개 가지고있는 디자인 타임 (designtime)에서의 악몽이었습니다.groupbox 대신 사용할 수 있습니까?
WPF가이 문제를 해결합니까? 그룹 박스가 여전히 길입니까? 아니면 더 나은 해결책이 있습니까?
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을 참조하십시오.
와우 정보에 감사드립니다. WPF에 더 많이 들어가면 더 좋아집니다 ... –
더 이상 관련이 없지만 UserControls는 WinForms의 더 나은 솔루션이었을 것입니다. 별도로 설계 할 수 있습니다. –