मैं एक WPF प्रोजेक्ट में एमवीवीएम के साथ एवलॉन डॉक का उपयोग करता हूं।डब्ल्यूपीएफ - एवलॉन डॉक - समापन दस्तावेज़
जब मैंने "एक्स" (टैब का बंद बटन) मारा तो मेरा दस्तावेज़ बंद हो गया लेकिन स्मृति में रहता है। ऐसा लगता है कि यह केवल छिपा हुआ है। इसे मेरे Model.Documents
संग्रह से हटाया नहीं गया है।
यदि मैं DockingManager_DocumentClosing
जोड़ता हूं और संग्रह से अपना दस्तावेज़ निकालने का प्रयास करता हूं, तो मुझे Xceed.Wpf.AvalonDock.Layout.LayoutContent
की निम्न विधि में अपवाद प्राप्त होता है क्योंकि parentAsContainer
शून्य है।
/// <summary>
/// Close the content
/// </summary>
/// <remarks>Please note that usually the anchorable is only hidden (not closed). By default when user click the X button it only hides the content.</remarks>
public void Close()
{
var root = Root;
var parentAsContainer = Parent as ILayoutContainer;
parentAsContainer.RemoveChild(this);
if (root != null)
root.CollectGarbage();
OnClosed();
}
किसी को भी मैं कैसे AvalonDock में दस्तावेज़ इसी क्रम में मेरी Model.Documents
से हटाया जा सकता अंततः निपटारा किया जा करने के लिए जब मैं अपने Close
बटन हिट प्रबंधन कर सकते हैं पता है?
संदर्भ के लिए:
<avalonDock:DockingManager
x:Name="DockingManager"
DocumentsSource="{Binding DocumentItems}"
ActiveContent="{Binding ActiveMainWindowViewModel,
Converter={StaticResource RestrictedClassConverter},
ConverterParameter={x:Type multiSimAnalysis:MainWindowViewModel},
Mode=TwoWay}"
DocumentClosing="DockingManager_DocumentClosing"
ActiveContentChanged="DockingManager_ActiveContentChanged">
<avalonDock:DockingManager.LayoutItemContainerStyleSelector>
<pane:PanesStyleSelector>
<pane:PanesStyleSelector.MainWindowViewLcStyle>
<Style TargetType="{x:Type avalonDock:LayoutItem}">
<Setter Property="Title" Value="{Binding Model.Title}"/>
<Setter Property="ToolTip" Value="{Binding Model.Title}"/>
<Setter Property="CloseCommand" Value="{Binding Model.CloseCommand}"/>
<Setter Property="IconSource" Value="{Binding Model.IconSource}"/>
<Setter Property="IsSelected" Value="{Binding Model.IsSelected, Mode=TwoWay}"/>
<Setter Property="IsActive" Value="{Binding Model.IsActive, Mode=TwoWay}"/>
<Setter Property="ContentId" Value="{Binding Model.ContentId}"/>
</Style>
</pane:PanesStyleSelector.MainWindowViewLcStyle>
</pane:PanesStyleSelector>
</avalonDock:DockingManager.LayoutItemContainerStyleSelector>
<avalonDock:DockingManager.LayoutItemTemplateSelector>
<multiSimAnalysis:PanesTemplateSelector>
<multiSimAnalysis:PanesTemplateSelector.MainWindowLcTemplate>
<DataTemplate>
<multiSimAnalysis:MainWindowViewLc />
</DataTemplate>
</multiSimAnalysis:PanesTemplateSelector.MainWindowLcTemplate>
</multiSimAnalysis:PanesTemplateSelector>
</avalonDock:DockingManager.LayoutItemTemplateSelector>
<avalonDock:DockingManager.Theme>
<avalonDock:VS2010Theme/>
</avalonDock:DockingManager.Theme>
<avalonDock:LayoutRoot>
<avalonDock:LayoutPanel Orientation="Horizontal">
<avalonDock:LayoutAnchorablePane DockWidth="400">
<avalonDock:LayoutAnchorable Title="Scope(s) selection" x:Name="PanelScopeSelection" IsVisible="True">
<scopeSelection:UserControlSelectStudyScope x:Name="ToolScopeSelection"/>
</avalonDock:LayoutAnchorable>
</avalonDock:LayoutAnchorablePane>
<avalonDock:LayoutDocumentPane/>
<avalonDock:LayoutAnchorablePane DockWidth="150">
<avalonDock:LayoutAnchorable Title="Properties" x:Name="PanelScopePropertyGrid">
<!--<multiSimAnalysis:UserControlPropertyGrid x:Name="ToolPropertyGrid" />-->
<xctk:PropertyGrid x:Name="ToolPropertyGrid" SelectedObject="{Binding ActiveObject}" />
</avalonDock:LayoutAnchorable>
</avalonDock:LayoutAnchorablePane>
</avalonDock:LayoutPanel>
</avalonDock:LayoutRoot>
</avalonDock:DockingManager>
यदि आप एमवीवीएम का उपयोग नहीं कर रहे हैं तो इसे ठीक करने का कोई तरीका है? –
मुझे नहीं पता ??? (देरी के लिए खेद है ... मैंने अभी आपका प्रश्न देखा है) –
यह एक लंबा शॉट है, लेकिन इस घटना को कभी मेरे लिए नहीं बुलाया जाता है, क्या किसी और के पास ऐसा ही अनुभव होता है? –