错误:当在窗体上放置多个控件时,引发“主题”属性已由“句点”注册”

伊夫97

如您在下面的代码中看到的,我创建了一个名为Period的自定义控件,该控件从Listbox继承。在其中,我声明了一个名为'Subjects'的只读依赖属性。当在WPF窗口上放置一个句点时,一切运行正常。但是,当我放置多个时,出现标题中提到的错误。

这是期间类:

Public Class Period
Inherits System.Windows.Controls.ListBox

'-------- PROPERTIES --------'
Public ReadOnly Property Subjects() As ObservableCollection(Of Subject)
    Get
        Return Me.GetValue(SubjectsProperty)
    End Get
End Property

Private ReadOnly SubjectsPropertyKey As DependencyPropertyKey = DependencyProperty.RegisterReadOnly("Subjects", GetType(ObservableCollection(Of Subject)), GetType(Period), New FrameworkPropertyMetadata(New ObservableCollection(Of Subject)))
Public ReadOnly SubjectsProperty As DependencyProperty = SubjectsPropertyKey.DependencyProperty

'-------- SUBROUTINES ---------'
Shared Sub New()
    'This OverrideMetadata call tells the system that this element wants to provide a style that is different than its base class.
    'This style is defined in themes\generic.xaml
    DefaultStyleKeyProperty.OverrideMetadata(GetType(Period), New FrameworkPropertyMetadata(GetType(Period)))
End Sub

Public Sub New()
    MyBase.New()

    Me.SetValue(SubjectsPropertyKey, New ObservableCollection(Of Subject))


End Sub


'-------- METHODS ---------'
Public Sub AddSubject(ByRef subject As Subject)
    If Me.CheckForDuplicates(subject) = True Then
        MsgBox("This subject is already present in this period.")
    Else
        Dim SubjectsList As New ObservableCollection(Of Subject)
        SubjectsList = Me.GetValue(SubjectsProperty)
        SubjectsList.Add(subject)

        Me.SetValue(SubjectsPropertyKey, SubjectsList)
    End If
End Sub

Public Sub RemoveSubject(ByRef subject As Subject)
    If Me.CheckForDuplicates(subject) = False Then
        MsgBox("This subject is not present in this period.")
    Else
        Dim SubjectsList As New ObservableCollection(Of Subject)
        SubjectsList = Me.GetValue(SubjectsProperty)
        SubjectsList.Remove(subject)

        Me.SetValue(SubjectsPropertyKey, SubjectsList)
    End If
End Sub

Public Function CheckForDuplicates(ByRef subject As Subject) As Boolean
    Dim Conflict As Boolean

    If Subjects.Contains(subject) Then
        Conflict = True
    End If

    Return Conflict
End Function

Private Sub Period_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
    Me.ItemsSource = Subjects
End Sub
End Class

这是窗口的代码:

<Grid Background="#FF2B2B2B">
    <local:Period HorizontalAlignment="Left" VerticalAlignment="Top"/>
    <local:Period HorizontalAlignment="Left" VerticalAlignment="Top"/>
</Grid>
脂蛋白

SubjectsPropertyKeySubjectsProperty必须为Shared否则,它将尝试在Period类的每个实例中注册Subject并且在成功注册后失败。

请参阅MSDN中的“示例”部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重置放置在窗体上的用户控件

来自分类Dev

在窗体上的控件中创建值

来自分类Dev

如何从放置在窗体上的面板中捕获值

来自分类Dev

在窗体控件上禁用某些TabIndex值?

来自分类Dev

如何在窗体控件(dockPanels)上重新加载焦点

来自分类Dev

控件突然消失在窗体设计器上

来自分类Dev

将控件定位在窗体上的绝对位置

来自分类Dev

c# 在窗体上注册任何 MouseClick 事件

来自分类Dev

Rails 4:嵌套属性未显示在窗体上

来自分类Dev

在窗体上移动按钮时发生Delphi访问冲突

来自分类Dev

如何在窗体上的所有控件上更改文本的语言

来自分类Dev

如何在运行时基于鼠标移动在窗体上移动所有控件

来自分类Dev

使用拆分器时如何使控件在窗体中可见?

来自分类Dev

确保在窗体关闭时捕获数据感知控件中的更改

来自分类Dev

Windows窗体控件属性?

来自分类Dev

PHP Web窗体上的多个错误

来自分类Dev

Winforms:在窗体控件中调整用户控件的大小

来自分类Dev

当遍历窗体上的控件时,如何识别特定的按钮?

来自分类Dev

将控件拖到窗体上时出现 NullReferenceException

来自分类Dev

有什么方法可以在Windows窗体的LinkLabel控件中放置多个链接

来自分类Dev

Visual Studio将控制器/工具放在窗体上的其他位置,而不是我放置的位置

来自分类Dev

在引发的事件上更新多个属性

来自分类Dev

始终在窗体上启用角度按钮

来自分类Dev

单选按钮在窗体上的位置

来自分类Dev

根据字段值在窗体上的addError

来自分类Dev

将窗体控件放置在angular的subscribe方法中时,无法正确初始化

来自分类Dev

子控件未注册到父窗体

来自分类Dev

WPF中的“ <控件名称>”错误已注册“获取<属性名称>”

来自分类Dev

WPF中的“ <控件名称>”错误已注册“获取<属性名称>”

Related 相关文章

  1. 1

    重置放置在窗体上的用户控件

  2. 2

    在窗体上的控件中创建值

  3. 3

    如何从放置在窗体上的面板中捕获值

  4. 4

    在窗体控件上禁用某些TabIndex值?

  5. 5

    如何在窗体控件(dockPanels)上重新加载焦点

  6. 6

    控件突然消失在窗体设计器上

  7. 7

    将控件定位在窗体上的绝对位置

  8. 8

    c# 在窗体上注册任何 MouseClick 事件

  9. 9

    Rails 4:嵌套属性未显示在窗体上

  10. 10

    在窗体上移动按钮时发生Delphi访问冲突

  11. 11

    如何在窗体上的所有控件上更改文本的语言

  12. 12

    如何在运行时基于鼠标移动在窗体上移动所有控件

  13. 13

    使用拆分器时如何使控件在窗体中可见?

  14. 14

    确保在窗体关闭时捕获数据感知控件中的更改

  15. 15

    Windows窗体控件属性?

  16. 16

    PHP Web窗体上的多个错误

  17. 17

    Winforms:在窗体控件中调整用户控件的大小

  18. 18

    当遍历窗体上的控件时,如何识别特定的按钮?

  19. 19

    将控件拖到窗体上时出现 NullReferenceException

  20. 20

    有什么方法可以在Windows窗体的LinkLabel控件中放置多个链接

  21. 21

    Visual Studio将控制器/工具放在窗体上的其他位置,而不是我放置的位置

  22. 22

    在引发的事件上更新多个属性

  23. 23

    始终在窗体上启用角度按钮

  24. 24

    单选按钮在窗体上的位置

  25. 25

    根据字段值在窗体上的addError

  26. 26

    将窗体控件放置在angular的subscribe方法中时,无法正确初始化

  27. 27

    子控件未注册到父窗体

  28. 28

    WPF中的“ <控件名称>”错误已注册“获取<属性名称>”

  29. 29

    WPF中的“ <控件名称>”错误已注册“获取<属性名称>”

热门标签

归档