가능한 해결 방법 중 하나는 첨부 된 속성을 사용하는 것입니다. 연결된 속성은 상태를 변경하는 데 필요한 메서드를 호출합니다. 그런 다음 바인딩 할 수 있습니다.
public static class ContentAttach
{
public static readonly DependencyProperty StateProperty = DependencyProperty.RegisterAttached(
"State", typeof(DockableContentState), typeof(ContentAttach), new PropertyMetadata(StateChanged));
public static void SetState(DockableContent element, DockableContentState value)
{
element.SetValue(StateProperty, value);
}
public static DockableContentState GetState(DockableContent element)
{
return (DockableContentState)element.GetValue(StateProperty);
}
private static void StateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var element = (DockableContent)d;
var state = (DockableContentState)e.NewValue;
switch (state)
{
// Call methods in here to change State.
}
}
}
좋은 시작. 이 정적 클래스에서 지정된 Avalon DockableContent에 대한 참조를 어떻게 얻을 수 있습니까? 어떻게 든 2 방향으로 만들어야하므로 DockableContent에 이벤트를 등록하고 첨부 된 DP의 값을 변경해야합니다. – jonathanpeppers
샘플 코드에서 지정된 DockableContent는 StateChanged의 'element'변수입니다. –
죄송합니다. MenuItem에서이 속성을 설정하려고 생각했지만 실제로 DockableContent의 속성에 바인딩하면 전달 될 것입니다. 시도해 보겠습니다. – jonathanpeppers