Почему в ResourceDictionary не могу сохранить объект через XAML?

Сделал такой класс

using System.Windows;

namespace Wpf.Controls.GridView
{
    public class ColumnDataSetup
    {
        public ColumnDataSetup() { }

        public object Header
        {
            get;set;            
        }

        public DataTemplate HeaderTemplate
        {
            get; set;
        }

        public string DisplayMember
        {
            get; set;           
        }

        public DataTemplate CellTemplate
        {
            get;set;
        }

    }
}

была идея сохранять настройки для столбцов грида и при желании генерировать по этим настройкам с учетом установок для столбца их внешний вид. Внутри элементов добавить эти настройки я могу в качестве именованных ресурсов

<CTGV:CTGridViewAutomatic x:Class="Client.Wpf.BarcodeStation.GridView.TransferListView"
                 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" 
                 xmlns:CTGV="clr-namespace:Wpf.Controls.GridView;assembly=Wpf"                 
                 ItemContainerStyle="{DynamicResource ctListViewItemBig}"                 
                 Margin="4"
                 mc:Ignorable="d" 
                 d:DataContext="{d:DesignInstance Type=vm:TransferChangesViewModel}"
                 Style="{StaticResource ctGridViewAutomaticBig}"
                 d:DesignHeight="450" d:DesignWidth="800">
    <CTGV:CTGridViewAutomatic.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!--generator style-->
                <ResourceDictionary Source="pack://application:,,,/Wpf;component/Controls/CTGridView/Styles/CTGridViewGeneratorStyle.xaml"/>
            </ResourceDictionary.MergedDictionaries>

            <CTGV:ColumnDataSetup x:Key="gridCellLeftText">
                <CTGV:ColumnDataSetup.CellTemplate>
                    <DataTemplate>
                        <ContentPresenter Style="{DynamicResource PropertyValue}" Content="{TemplateBinding Content}" HorizontalAlignment="Left"/>
                    </DataTemplate>
                </CTGV:ColumnDataSetup.CellTemplate>
            </CTGV:ColumnDataSetup>
        </ResourceDictionary>
        
    </CTGV:CTGridViewAutomatic.Resources>
...

и дальше вроде как все компилируется. Но если пробую добавить такой объект в ResourceDictionary в отдельном файле, то получаю ошибку:

Error The tag 'ColumnDataSetup' does not exist in XML namespace 'clr-namespace:Wpf.Controls.GridView;assembly=Wpf'. Line 19 Position 6. Wpf D:...Wpf\Controls\CTGridView\Styles\CTGridViewGeneratorStyle.xaml 19

...

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:rs="clr-namespace:Wpf.Resources;assembly=Wpf"
                    xmlns:ctvg="clr-namespace:Wpf.Controls.GridView;assembly=Wpf"
                    xmlns:CTGV="clr-namespace:Wpf.Controls.GridView;assembly=Wpf"                    
                    xmlns:system="clr-namespace:System;assembly=mscorlib">
    
    <CTGV:ColumnDataSetup x:Key="gridCellLeftText">
        <CTGV:ColumnDataSetup.CellTemplate>
            <DataTemplate>
                <ContentPresenter Style="{DynamicResource PropertyValue}" Content="{TemplateBinding Content}" HorizontalAlignment="Left"/>
            </DataTemplate>
        </CTGV:ColumnDataSetup.CellTemplate>
    </CTGV:ColumnDataSetup>    

</ResourceDictionary>

Можно с этим как то справится? чтобы настройки через xaml в словарь ресурсов сохранить и использовать их потом как ресурсы?

Почему я могу указать в качестве ресурса: цвет, шаблон, размер шрифта, но не могу задать вот такой набор статичных данных как ColumdDatasetup?


Ответы (1 шт):

Автор решения: KingPeas

Попробовал на тестовом проекте, все отрабатывает нормально. в итоге экспериментов и рысканья в сети, нашел что в ресурсах надо сбросить определение неймспейса для доступа к классу.

xmlns:CTGV="clr-namespace:Wpf.Controls.GridView;assembly="

вот так скомпилировалось. Почему не знаю, но главное работает. Если кто сможет объяснить буду благодарен.

→ Ссылка