Fehler: Der Standardwerttyp stimmt nicht mit dem Typ der Eigenschaft "..." überein

  • WPF MVVM
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von DTF.

    Fehler: Der Standardwerttyp stimmt nicht mit dem Typ der Eigenschaft "..." überein

    Guten Abend :)

    bin gerade dabei, meine erste selbst geschriebene AttachedProperty from scratch zu machen und scheint soweit auch zu stimmen, aber ich bekomme da einen Fehler, mit dem ich nix anfangen kann und im Netz find ich da zwar was, aber das ist etwas anders als bei mir.

    Und zwar möchte ich vom ViewModel an die CaretPosition (also die Cursorposition) einer Textbox rankommen und bekomme dabei diesen Fehler:

    Der Standardwerttyp stimmt nicht mit dem Typ der Eigenschaft "CaretPosition" überein.

    ...und das hier wird rot unterstrichen: viewmodel:CaretPositionHelper.CaretPosition="0"

    Ich weiss leider nicht, wo ich da suchen muss.

    Hier mein XAML:

    XML-Quellcode

    1. ​<TextBox Grid.Row="0" Text="{Binding DateiNameMuster, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Background="Transparent" Foreground="{DynamicResource VordergrundfarbeBrush}" Margin="10" viewmodel:CaretPositionHelper.CaretPosition="0"/>



    Hier die Attached Property:

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Windows
    3. Imports System.Windows.Controls
    4. Public Class CaretPositionHelper
    5. Inherits DependencyObject
    6. Private Shared MainModule As Services.IZentraleKlasse = Services.ServiceContainer.GetService(Of Services.IZentraleKlasse)
    7. Public Shared Function GetCaretPosition(ByVal element As TextBox) As Integer
    8. If element Is Nothing Then
    9. Throw New ArgumentNullException("element")
    10. End If
    11. Return CInt(element.GetValue(CaretPositionProperty))
    12. End Function
    13. Public Shared Sub SetCaretPosition(ByVal element As TextBox, ByVal value As Integer)
    14. If element Is Nothing Then
    15. Throw New ArgumentNullException("element")
    16. End If
    17. element.SetValue(CaretPositionProperty, value)
    18. End Sub
    19. Public Shared ReadOnly CaretPositionProperty As _
    20. DependencyProperty = DependencyProperty.RegisterAttached("CaretPosition",
    21. GetType(Integer), GetType(CaretPositionHelper),
    22. New UIPropertyMetadata("", AddressOf CaretPositionChanged))
    23. Private Shared Sub CaretPositionChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
    24. Dim obj As TextBox = TryCast(d, TextBox)
    25. AddHandler obj.SelectionChanged, Sub(sender, e2)
    26. MainModule.CaretPositionDateiNamenRegeln = obj.SelectionStart
    27. Debug.WriteLine(obj.SelectionStart)
    28. End Sub
    29. End Sub
    30. End Class


    Kann mir da jemand auf die Sprünge helfen?
    Ich glaub ich habs gesehen, die Property hat Typ Integer, schau dir mal den verwendeten Konstruktor von UIPropertyMetadata an, danach was du als 1. Argument reingibst, ""(aka string) != int

    Microsoft schrieb:

    public UIPropertyMetadata (object defaultValue, System.Windows.PropertyChangedCallback propertyChangedCallback);


    Wenn es das nicht ist, ist das auch der Fall wenn du die Zeilen 8 und 33 auskommentierst? Da könnte auch was null sein, wird zur DesignTime auch so sein. Weil da gibst die Services ja noch nicht, erst beim StartUp

    PS:
    Steht ja im Title der StandartWertTyp. Wird also das erste sein.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DTF“ ()

    kafffee schrieb:

    XAML-IntelliSense zur Designtime mal wieder...


    Naja, XAML ist hier unschuldig! Die Sache ist einfach das der VB-Code kompiliert werden muss, erst danach kann das auch während der DesignTime genuzt werden.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D