在具有從基類繼承的多個窗口的應用程序中,我想在每個窗口上都有一個狀態欄。我認爲這必須用代碼完成,因爲一個XAML生成的類不能從另一個繼承。在基本窗口類中包裝窗口內容
的XAML看起來是這樣的:
<my:BaseWindow x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:WpfApplication1">
<StackPanel>
<TextBlock Text="Content" />
</StackPanel>
</my:BaseWindow>
和BaseWindow類:
public class BaseWindow : Window {
protected override void OnContentChanged(object oldContent, object newContent) {
var sb = new StatusBar();
sb.Items.Add(new TextBlock {
Text = "Status bar"
});
var dp = new DockPanel();
dp.Children.Add(sb);
DockPanel.SetDock(sb, Dock.Bottom);
dp.Children.Add((UIElement)newContent);
base.OnContentChanged(oldContent, dp);
}
}
引發以下錯誤:必須斷開當前父指定子視覺附加到新的父可視化之前。
我該如何解決這個問題?或者,我可以使用其他什麼技術來實現此目的?
哪裏/什麼時候引發這個錯誤? – 2013-05-01 07:52:40
在對'base.OnContentChanged'的調用中。 – 2013-05-01 09:04:23