1
在MVVM環境中使用avalondock似乎相當具有挑戰性。只要我從shellview中分離DocumentPane,我就會丟失相應的datacontext,而且我的視圖是空的。重新連接時,恢復正常。avalondock mvvm
有沒有人有解決方案?
在MVVM環境中使用avalondock似乎相當具有挑戰性。只要我從shellview中分離DocumentPane,我就會丟失相應的datacontext,而且我的視圖是空的。重新連接時,恢復正常。avalondock mvvm
有沒有人有解決方案?
這是我目前使用的;我的app有兩個可停靠的窗格,每個窗格都有自己的viewmodel。這些視圖模型作爲主窗口視圖模型的屬性公開,這也是主窗口的DataContext。訣竅是使用靜態Application.Current實例的MainWindow.DataContext引用該數據上下文。
例如:
class MainWindowViewModel
{
public WindowAViewModel {get; set;}
public WindowBViewModel {get; set;}
}
//this goes in App.xaml.cs, because my MainWindowViewModel has a constructor
//with arguments, else you could just set the Window.DataContext in xaml
var window = new MainWindow();
window.DataContext = new MainWindowViewModel(...);
主窗口的XAML:
<ad:DockingManager>
<ad:ResizingPanel Orientation="Horizontal" >
<ad:DockablePane>
<ad:DockableContent>
<l:WindowA DataContext="{Binding Path=MainWindow.DataContext.WindowAViewModel,
Source={x:Static app:App.Current}}"/>
</ad:DockableContent>
<ad:DockableContent>
<l:WindowB DataContext="{Binding Path=MainWindow.DataContext.WindowBViewModel,
Source={x:Static app:App.Current}}"/>
</ad:DockableContent>
</ad:DockablePane>
</ad:ResizingPanel>
</ad:DockingManager>
不知道如何工作了大型模塊化的應用程序,雖然,但我已經看到了棱鏡a sample application被帶沙發使用(一AvalonDock包裝),所以你可能想看看他們是如何做到的。
請在AvalonDock文檔中查看[here](http://avalondock.codeplex.com/wikipage?title=AvalonDock%20Binding&referringTitle=Documentation)。 – 2011-05-04 10:55:00
我寫了一篇文章,演示了將AvalonDock集成到MVVM應用程序的一種方式:http://www.codeproject.com/Articles/239342/AvalonDock-and-MVVM – 2012-04-17 22:46:31