7

ここで明らかなはずの何かが欠けていると思いますが、これには空白を描いています。

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 自身のドキュメントは、これが機能するはずであることを暗示しているようです。

これを解決する方法はありますか?

4

1 に答える 1

3
<UserControl x:Class="My.LoggerControl"


 xmlns:local="clr-namespace:My.LogTest"

名前空間を間違えたようですか?My.LogTest をインポートして xml-prefix ローカルに割り当てている間、LoggerControl は名前空間 My としてリストされます。これを次のように変更します。

xmlns:local="clr-namespace:My"

そして、それはうまくいくはずだと思います。そうでない場合は、LoggerControl 宣言を修正してください。

于 2012-06-27T17:20:07.077 に答える