Почему в 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 шт):
Попробовал на тестовом проекте, все отрабатывает нормально. в итоге экспериментов и рысканья в сети, нашел что в ресурсах надо сбросить определение неймспейса для доступа к классу.
xmlns:CTGV="clr-namespace:Wpf.Controls.GridView;assembly="
вот так скомпилировалось. Почему не знаю, но главное работает. Если кто сможет объяснить буду благодарен.