一種可能的解決方案是使用附加屬性。附加屬性將調用必要的方法來更改狀態。你可以綁定到那個。
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的引用?而且我不得不以某種方式使它成爲雙向的,所以我必須在DockableContent上註冊一個事件並更改附加DP的值。 – jonathanpeppers 2010-07-06 01:46:38
在示例代碼中,指定的DockableContent是StateChanged中的'element'變量。 – 2010-07-06 02:58:44
對不起,我在想你會在MenuItem上設置這個屬性,但你真的只是綁定到DockableContent的屬性,它會被傳入。我會試試這個。 – jonathanpeppers 2010-07-06 12:23:25