附加类型 DependencyProperty 不适用于自定义类型
Attached Type DependencyProperty not working with custom types
我在我的项目中创建了一个附件 Type
DependencyProperty
。现在,当它与默认命名空间以外的类型一起使用时,我得到一个 XamlParseException
和错误消息 Failed to create a 'System.Type' from the text 'local:SomeClass'.
。使用例如Button
或 Grid
作为值不会引发异常。
Class重现问题:
namespace TypePropertyTest
{
public class SomeClass
{ }
}
Class 包含附加的 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)
是最低版本。
显然,可以通过将项目的目标版本更新为 >= 1809
的版本来解决该问题(使用 1809
和 1903
进行测试)。
我在我的项目中创建了一个附件 Type
DependencyProperty
。现在,当它与默认命名空间以外的类型一起使用时,我得到一个 XamlParseException
和错误消息 Failed to create a 'System.Type' from the text 'local:SomeClass'.
。使用例如Button
或 Grid
作为值不会引发异常。
Class重现问题:
namespace TypePropertyTest
{
public class SomeClass
{ }
}
Class 包含附加的 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)
是最低版本。
显然,可以通过将项目的目标版本更新为 >= 1809
的版本来解决该问题(使用 1809
和 1903
进行测试)。