首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XamlParseException -属性值无效(...)对于属性属性

XamlParseException -属性值无效(...)对于属性属性
EN

Stack Overflow用户
提问于 2009-08-04 19:17:55
回答 1查看 1.1K关注 0票数 3

我在设计我构建的自定义控件时遇到了一些问题。下面是控制源码:

代码语言:javascript
复制
namespace SilverlightStyleTest
{
    public class AnotherControl: TextBox
    {
        public string MyProperty { get; set; }
    }
}

在相同的命名空间和项目中,我尝试为MyProperty创建一个带有设置器的样式,如下所示:

代码语言:javascript
复制
<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 property的属性值MyProperty无效。行:9位置: 30

我找不出导致这个错误的样式有什么问题。我还尝试将属性名称“完全限定”为"Local:AnotherControl.MyProperty“,但也不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-04 19:27:45

不能在样式中设置非依赖属性

您需要将其定义为DependencyProperty:

代码语言:javascript
复制
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); }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1229388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档