0

カスタム ユーザー コントロールに特定の名前空間をインポートしようとすると、このエラーが発生します。このエラーの原因となっている行はインポートです: 'xmlns:c="clr-namespace:Wifi.Toolbar'. この行を削除すると、エラーは消えます。

WifiCollaborateToolbarView.xaml(1,1): エラー MC3000: 'ルート レベルのデータが無効です。行 1、位置 1。XML が無効です。

Windows 7
ビジュアル スタジオ 2010 SP1
.NET 4.0

XAML ファイルは次のとおりです。

<UserControl x:Class="Wifi.Toolbar.WifiCollaborateToolbarView"
             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:c="clr-namespace:Wifi.Toolbar">

    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="CollaborateStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>

    <Grid x:Name="GridTopLevel" SnapsToDevicePixels="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <c:CollaborateButton x:Name="ButtonName"
                             Grid.Column="0" 
                             Style="{StaticResource MpCollaborateButtonStyle}"/>


    </Grid>
</UserControl>

これが、このファイルにインポートしようとしているクラスです。XAML ファイルと同じアセンブリに存在します。

using System;
using System.Windows;
using System.Windows.Controls;

namespace Wifi.Toolbar
{
    [TemplatePart(Name="PART_Icon", Type=typeof(Image))]
    [TemplatePart(Name="PART_Caption", Type=typeof(TextBlock))]
    public class CollaborateButton : Button
    {
        private Image part_icon;
        private TextBlock part_caption;

        public CollaborateButton()
        {

        }

        public override void OnApplyTemplate()
        {
            ...
        }

        protected override Size MeasureOverride(Size availableSize)
        {
            ...
        }

        protected override Size ArrangeOverride(Size finalSize)
        {
            ...            
        }
    }   
}

ボタン テンプレート

<Style x:Key="MpCollaborateButtonStyle" TargetType="{x:Type c:CollaborateButton}">
        <Setter Property="Height" Value="24" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="BorderBrush" Value="{StaticResource MpCollaborateButtonNormalStrokeBrush}" />
        <Setter Property="Background" Value="{StaticResource MpButtonNormalFillBrush}" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border x:Name="Bd"
                            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                            MinWidth="{TemplateBinding MinWidth}"
                            Height="{TemplateBinding Height}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            Background="{TemplateBinding Background}">

                        <Grid Margin="6,0,12,0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>

                            <Image x:Name="PART_Icon"
                                   Grid.Column="0"
                                   Margin="0,0,7,0" 
                                   Width="16" 
                                   Height="16" 
                                   Source="Images/Collaboration_MeetingName_16x16.png" />

                            <TextBlock x:Name="PART_Caption"
                                       Grid.Column="2"
                                       Text="This is some really long text that is only for testing purposes. Isn't this fun?"
                                       Style="{StaticResource MpCollaborateTextBlock}"/>

                        </Grid>
                    </Border>

                    <ControlTemplate.Triggers>
                        <Trigger Property="IsPressed" Value="True">
                            <Setter Property="Background" Value="{StaticResource MpButtonDownFillBrush}" />
                        </Trigger>
                    </ControlTemplate.Triggers>

                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
4

1 に答える 1

1

ルート レベルの UserControl 宣言の前に、いくつかのがらくたがあったに違いありません。たぶん、あなたが見ていないところにタブが付けられていたのでしょう。たとえば、これにより問題のエラーが発生します...

                                                                                                      Junk
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>

    </Grid>
</Window>

これはこれと同じです:

Junk
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>

    </Grid>
</Window>
于 2012-10-30T22:41:15.233 に答える