0

でコンパイラ エラーが発生する

src:FieldDefUsrFldUsrs

エラー 8 タグ「FieldDefUsrFldUsrs」が XML 名前空間「clr-namespace:Gabe2a」に存在しません。行 14 位置 10. C:\My Dev\CommonSource\Gabriel\Gabe2a\Gabe2Acollection\Gabe2aI55\PageSearchFieldUsrFld.xaml 14 10 Gabe2a

このエラーを修正するにはどうすればよいですか?

<Page x:Class="Gabe2a.PageSearchFieldUsrFld"
      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" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"
      DataContext="{Binding RelativeSource={RelativeSource self}}"
      xmlns:local="clr-namespace:Gabe2a"
      xmlns:src="clr-namespace:Gabe2a"
      ShowsNavigationUI="False"
    Title="PageSearchFieldUsrFld">
    <Page.Resources>
        <src:FieldDefUsrFldUsrs x:Key="MyList"/>
        <HierarchicalDataTemplate DataType = "{x:Type src:League}"
                                ItemsSource = "{Binding Path=Divisions}">
            <TextBlock Text="{Binding Path=Name}"/>
        </HierarchicalDataTemplate>

namespace Gabe2a
{
    public partial class PageSearchFieldUsrFld : Page
    {            
        private List<GabeLib.FieldDefUsrFldUsr> fieldDefUsrFldUsrs = new List<GabeLib.FieldDefUsrFldUsr>();
        public List<GabeLib.FieldDefUsrFldUsr> FieldDefUsrFldUsrs { get { return fieldDefUsrFldUsrs; } }

namespace Gabe2a {
    public class GabeLib : INotifyPropertyChanged
    {
        [Serializable()]
        public class FieldDefUsrFldUsr 
        {
4

1 に答える 1

0

XAML でネストされたクラスをインスタンス化しようとしても、WPF ではまだダメです。問題の詳細と、XAML で使用されるカスタム クラスのルールを示す MSDN リンクについては、この回答を参照してください。

カスタム クラスは、ネストされたクラスであってはなりません。入れ子になったクラスと、その一般的な CLR 使用構文の "ドット" は、添付プロパティなどの他の WPF や XAML 機能と干渉します。

これは、フレームワーク バージョン 4.5 にも当てはまります。

これを回避する方法について...ネストされたクラスを使用する本当の理由はありますか? プロジェクトの編成には、通常、ドット付きの名前空間を使用するだけで十分です。

namespace Gabe2a.GabeLib 
{
    public class GabeLib : INotifyPropertyChanged         
    {}

    [Serializable()]
    public class FieldDefUsrFldUsr 
    {}
}

したがって、XAML でネストされたクラスをインスタンス化することはできないようですがDataTemplates、現在のクラス構造を変更せずにそれを使用することはできます。

<DataTemplate DataType="{x:Type local:GabeLib+FieldDefUsrFldUsr}">
    ...
</DataTemplate>
于 2013-11-15T07:59:41.103 に答える