C# 属性正在尝试从System.Windows.FrameworkElement访问值

C# 属性正在尝试从System.Windows.FrameworkElement访问值,c#,wpf,xaml,C#,Wpf,Xaml,任何人请尝试这个场景并分享解决我所面临问题的想法 情景: 在我的类(从控件继承)中,我刚刚声明了属性FlowDirection,它是BulletGraphFlowDirection(Enum(Forward,Backward))的类型 我使用了新的关键字FlowDirection来解决我收到的警告 警告“DirectionSfBulletGraph1.MyClass.FlowDirection”隐藏继承的成员“System.Windows.FrameworkElement.FlowDirecti

任何人请尝试这个场景并分享解决我所面临问题的想法

情景:

在我的类(从控件继承)中,我刚刚声明了属性FlowDirection,它是BulletGraphFlowDirection(Enum(Forward,Backward))的类型

我使用了新的关键字FlowDirection来解决我收到的警告

警告“DirectionSfBulletGraph1.MyClass.FlowDirection”隐藏继承的成员“System.Windows.FrameworkElement.FlowDirection”。如果要隐藏,请使用新关键字

    public enum BulletGraphFlowDirection
    {
        Forward,
        Backward
    }
public class MyClass : Control
{

    public new BulletGraphFlowDirection FlowDirection
    {
        get { return (BulletGraphFlowDirection)GetValue(FlowDirectionProperty); }
        set { SetValue(FlowDirectionProperty, value); }
    }

    // Using a DependencyProperty as the backing store for FlowDirection.  This enables animation, styling, binding, etc...
    public new static readonly DependencyProperty FlowDirectionProperty =
        DependencyProperty.Register("FlowDirection", typeof(BulletGraphFlowDirection), typeof(MyClass), new PropertyMetadata(BulletGraphFlowDirection.Backward));
}
问题:

当我试图在Xaml页面中设置属性FlowDirection值时,它只是抛出错误消息“Backward不是FlowDirection的有效值”

<local:MyClass x:Name="myClass" FlowDirection="Backward"/>
为什么从Xaml页面声明时会出现问题?很难找到问题的根本原因。请与我分享解决问题的想法

问候,


Jeyasri M

正如您所说,它尝试使用原始流向的值

原因是躲起来了!=最重要的因此,如果您的元素存储在Control类型的集合中,并且对其元素调用了FlowDirection,那么将调用Control.FlowDirection,而不是MyClass.FlowDirection。当您的控件试图解析xaml并初始化视图时,它可能作为控件而不是MyClass处理

在“代码隐藏”中设置值时,请明确指定要使用MyClass类型的变量设置MyClass.FlowDirection

如果将此变量实例化为:

Control myClass = new MyClass();
然后

在我看来也不行


正如Karmacon所建议的,更改名称将解决问题。(我想这会迫使xaml解析器将控件作为MyClass而不是control来处理)

为什么不将属性命名为其他名称呢?比如说BulletFlowDirection谢谢你的回复。但我的疑问是,当属性在代码隐藏FlowDirection属性中设置时,从其派生类而不是从基类(控件)访问值,如果问题是在DP中使用new关键字,那么在代码隐藏中设置时,场景也不应该工作。如果我使用new关键字,则FlowDirection属性不是从基类(控件)继承的,但它仍然试图仅从XAML声明而不是从code behind.FYI访问基类属性值。我在WinRT项目中尝试过相同的场景,没有任何问题。但不知道WPF平台出现问题的原因。
Control myClass = new MyClass();
myClass.FlowDirection = BulletGraphFlowDirection.Backward;