Caliburn.micro とカスタム ウィンドウ マネージャーを使用するアプリがあります。ウィンドウ マネージャーは独自のベース ウィンドウを作成するので、アプリケーション全体のルック アンド フィールをカスタマイズできます。
ウィンドウに次のようなコントロールを追加したいと思います。
<DockPanel>
<ContentPresenter Content="{Binding CustomContent}" />
<StatusBar Height="20" DockPanel.Dock="Bottom" Background="Blue"/>
</DockPanel>
Caliburn で ViewModel のユーザー コントロールを ContentPresenter に配置したいのですが、Caliburn がウィンドウのコンテンツ全体を置き換えています。
ウィンドウでこれを行いました:
using System.Windows;
namespace CaliburnCustomWindow
{
public partial class WindowBase
{
public static readonly DependencyProperty CustomContentProperty = DependencyProperty.Register("CustomContent", typeof (object), typeof (WindowBase));
public object CustomContent
{
get { return GetValue(CustomContentProperty); }
set { SetValue(CustomContentProperty, value); }
}
public WindowBase()
{
InitializeComponent();
}
}
}
そして、これを行うように WindowManager を変更しました。
using System.Windows;
using Caliburn.Micro;
namespace CaliburnCustomWindow
{
internal class AppWindowManager : WindowManager
{
protected override Window EnsureWindow(object model, object view, bool isDialog)
{
Window window = view as Window;
if (window == null)
{
if (view.GetType() == typeof (MainView))
{
window = new WindowBase
{
CustomContent = view,
SizeToContent = SizeToContent.Manual
};
window.Height = 500;
window.Width = 500;
}
window.SetValue(View.IsGeneratedProperty, true);
}
else
{
Window owner2 = InferOwnerOf(window);
if (owner2 != null && isDialog)
{
window.Owner = owner2;
}
}
return window;
}
}
}
しかし、うまくいきません。CustomContent 依存関係プロパティへのバインディングが機能していないようです。
これを行うことは可能ですか?もしそうなら、どのように?