XamlParseException - 属性Property的属性值(...)无效

时间:2009-08-04 19:17:55

标签: silverlight xaml coding-style

我在构建自定义控件时遇到了一些麻烦。这是控制源:

namespace SilverlightStyleTest
{
    public class AnotherControl: TextBox
    {
        public string MyProperty { get; set; }
    }
}

在同一命名空间中我尝试使用MyProperty的setter创建一个样式,如下所示:

<UserControl x:Class="SilverlightStyleTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Local="clr-namespace:SilverlightStyleTest">

    <UserControl.Resources>
        <Style x:Name="AnotherStyle" TargetType="Local:AnotherControl">
            <Setter Property="Width" Value="200"/>
            <Setter Property="MyProperty" Value="Hello."/>
        </Style>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot">
        <Local:AnotherControl Style="{StaticResource AnotherStyle}"/>
    </Grid>
</UserControl>

我最终遇到了运行时错误: 属性Property的属性值MyProperty无效。 [行:9位置:30]

我无法弄清楚导致此错误的样式有什么问题。我还尝试“完全限定”属性名称为“Local:AnotherControl.MyProperty”,但这也不起作用。

1 个答案:

答案 0 :(得分:4)

非依赖属性无法在样式中设置

您需要将其定义为DependencyProperty:

public static readonly DependencyProperty MyPropertyProperty =
    DependencyProperty.Register("MyProperty", typeof(string), typeof(AnotherTextBox),
        new FrameworkPropertyMetadata((string)null));

public string MyProperty
{
    get { return (string)GetValue(MyPropertyProperty); }
    set { SetValue(MyPropertyProperty, value); }
}