Прикрепленный тип DependencyProperty не работает с пользовательскими типами - PullRequest
0 голосов
/ 26 апреля 2020

Я создал прикрепленный Type DependencyProperty в своем проекте. Теперь при использовании его с типом, отличным от пространства имен по умолчанию, я получаю XamlParseException с сообщением об ошибке Failed to create a 'System.Type' from the text 'local:SomeClass'.. Использование, например, Button или Grid в качестве значения не приводит к исключению.

Классы для воспроизведения проблемы:

namespace TypePropertyTest
{
    public class SomeClass
    { }
}

Класс, содержащий прикрепленный DP:

namespace TypePropertyTest
{
    using System;
    using Windows.UI.Xaml;

    public static class TypeProperties
    {
        public static readonly DependencyProperty MyTypeProperty =
            DependencyProperty.RegisterAttached(
                "MyType",
                typeof(Type),
                typeof(TypeProperties),
                new PropertyMetadata(null));

        public static void SetMyType(DependencyObject d, Type type) => d.SetValue(MyTypeProperty, type);
        public static Type GetMyType(DependencyObject d) => (Type)d.GetValue(MyTypeProperty);
    }
}

MainPage.xaml:

<Page
    x:Class="TypePropertyTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="using:TypePropertyTest"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid local:TypeProperties.MyType="local:SomeClass">
    </Grid>
</Page>

Проект нацелен на версию 1803 (10.0; Build 17134) с минимальной версией Fall Creators Update (10.0; Build 16299).

1 Ответ

0 голосов
/ 26 апреля 2020

По-видимому, проблему можно решить, обновив целевую версию проекта до версии> = 1809 (протестировано с 1809 и 1903).

...