ここで明らかなはずの何かが欠けていると思いますが、これには空白を描いています。
TextBox
ログウィンドウとして使用するものだけを含む非常に原始的な UserControl を作成しました。
<UserControl x:Class="My.LoggerControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
x:Name="LoggerView">
<Grid x:Name="LayoutRoot">
<TextBox x:Name="LogWindow" AcceptsReturn="True"/>
</Grid>
</UserControl>
それが最善の方法だとは思いませんが、プロトタイプには十分なはずです。
コード ビハインドも同様に単純です。
public partial class LoggerControl : UserControl, ILogger
{
public LoggerControl()
{
InitializeComponent();
}
private LogLevel level = LogLevel.Warning;
#region ILogger
public LogLevel Level
{
get { return level; }
set { level = value; }
}
public void OnError(string s)
{
if (level >= LogLevel.Error)
LogWindow.AppendText("ERROR:::" + s + "\n");
}
// ...
#endregion
}
私が理解できないことは、このコントロールを自分の に追加する方法MainWindow.xaml
です。単純化すると、私のウィンドウは次のようになります。
<Window x:Class="My.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:My"
Title="Test" Height="350" Width="525">
<Grid>
<local:LoggerControl x:Name="LogView" />
</Grid>
</Window>
非常に単純なものであっても、Visual Studio 2010 のデザイナーはメイン ウィンドウを読み込めません。与えられたエラーは次のとおりです。
'LoggerControl' 型の値は、'UIElementCollection' 型のコレクションまたはディクショナリに追加できません。
このエラー メッセージは、主要な検索エンジン (および重複) で 1 つの無関係なヒットしかないため、有用なヘルプは見つかりませんでした。Microsoft 自身のドキュメントは、これが機能するはずであることを暗示しているようです。
これを解決する方法はありますか?