c# - 相同的依赖属性,多个类

标签 c# wpf visual-studio dependency-properties

Visual Studio 抛出了一个无用的异常,我认为这是由于我在两个具有相同名称的相似类中有多个依赖属性造成的。

这些类是添加/编辑联系人,因此它们共享许多属性,我的问题是这个。

我可以将属性(property)注册为:

DependencyProperty.Register( /*...*/ );

或:

MyDP.AddOwner( /*...*/ )

问题是我无法知道添加或编辑类是否会首先实例化(取决于用户的选择),因为它们被定义为静态的,所以我无法在它们的初始化逻辑中加入任何花哨的东西。 .. 我没有可以包含在这两个类中的想法。

那么在这种情况下如何设置依赖属性呢?

编辑:

Type Initialization Exception: The type initializer for 'CharterHouseTouchScreenDemo.Views.Membership.AddMembershipView' threw an exception.

我知道它是依赖属性初始化程序之一,因为单步执行时甚至没有到达构造函数。

此外,在这种情况下,它们没有足够的相似性来属于同一类。简而言之,它们唯一共享的是存储在此依赖属性中的信息。

编辑 2:

我很惊讶这没有得到更好的记录,在任何中型大型应用程序中,意外地将依赖属性命名为同一事物的可能性非常大。特别是对于BackgroundColourHeadingTextCurrentXYZ...

我一直假设你传递了所有者类的类型,这样它就不会导致这样的问题。

最佳答案

不是真正的犹太洁食答案,但它有效:

#region SubscriptionFee

/// <summary>
/// SubscriptionFee Dependency Property
/// </summary>
public static readonly DependencyProperty SubscriptionFeeProperty =
    DependencyProperty.Register( "SubscriptionFee_2", typeof( decimal ), typeof( EditMembershipViewModel ),
        new FrameworkPropertyMetadata( (decimal)0 ) );

/// <summary>
/// Gets or sets the SubscriptionFee property. This dependency property
/// indicates the new subscription fee for the customer.
/// </summary>
public decimal SubscriptionFee
{
    get { return (decimal)GetValue( SubscriptionFeeProperty ); }
    set { SetValue( SubscriptionFeeProperty, value ); }
}

#endregion SubscriptionFee

关于c# - 相同的依赖属性,多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3787096/

相关文章:

c# - 如何使用反射获取属性,同时忽略继承的属性?

WPF 基于 ListView 项目过滤组合框项目

visual-studio - 使用 msbuild 将 Visual Studio 解决方案文件从 2008 转换为 2010

c# - Automapper 不映射基础

c# - 如果它有小数位,则将值增加 1?

c# - WPF - 在 C# 中使用 Storyboard 的 EllipseGeometry 动画

c# - 绑定(bind)到 List<> 依赖属性的 WPF 上下文菜单

c# - 如何使用 MSBuild 注册一个 dll

c# - 使用通用/实用程序库

c# - 这是表示抽象工厂模式的好例子吗