Fehler beim Einbinden eines Converters im XAML

  • WPF

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Thomi.

    Fehler beim Einbinden eines Converters im XAML

    Hallo liebe Gemeinde,

    beim Färben von Datagridzellen habe ich ein Problem mit dem Einbinden eines Converters:

    XML-Quellcode

    1. <Window x:Class="DatagridBackground.MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:local="clr-namespace:DatagridBackground"
    5. xmlns:localColor="clr-namespace:DatagridBackground.Datagrid" <!--Fehler-->
    6. Title="Colors in a datagrid" Height="300" Width="560" Loaded="Window_Loaded" FontSize="14" >
    7. <Window.Resources>
    8. <!-- for every column, one need a class -->
    9. <localColor:MyBkColorConverter1 x:Key="bkColorCvrt1"/> <!--Fehler-->
    10. <localColor:MyBkColorConverter2 x:Key="bkColorCvrt2"/> <!--Fehler-->
    11. </Window.Resources>
    12. <DockPanel>
    13. <Grid DockPanel.Dock="Top" >
    14. <Grid.RowDefinitions>
    15. <RowDefinition Height="auto"/>
    16. </Grid.RowDefinitions>
    17. <Grid.ColumnDefinitions>
    18. <ColumnDefinition Width="auto"/>
    19. <ColumnDefinition Width="auto"/>
    20. <ColumnDefinition Width="auto"/>
    21. <ColumnDefinition Width="auto"/>
    22. <ColumnDefinition Width="auto"/>
    23. <ColumnDefinition Width="auto"/>
    24. <ColumnDefinition Width="auto"/>
    25. <ColumnDefinition Width="auto"/>
    26. </Grid.ColumnDefinitions>
    Nur Ausschnitt

    Ich bin Neueinsteiger in WPF und habe den Code gegoogelt (war in C#) habe ihn VB umgesetzt und nun
    kommpt folgende Fehlermeldungen:
    Nicht definierter CLR-Namespace. Der clr-namespace URI bezieht sich auf den Namespace DatagridBackground.Datagrid, der nicht gefunden wurde.

    und
    Der Name "MyBKColorConverter1 ist im Namespace "clr-namespace:DatagridBackground.Datagrid nicht vorhanden.


    Der c#-Code funktioniert einwandfrei.
    Kann mir jemand helfen - vielen Dank :) ?(
    Hallo VB1963, Danke für die schnelle Antwort.

    Habe den Code geändert

    XML-Quellcode

    1. <Window x:Class="DatagridBackground.MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:local="clr-namespace:DatagridBackground"
    5. xmlns:localColor="clr-namespace:DatagridBackground.DatagridBackground.Datagrid" <!--geändert Fehler weg-->
    6. Title="Colors in a datagrid" Height="300" Width="560" Loaded="Window_Loaded" FontSize="14" >
    7. <Window.Resources>
    8. <!-- for every column, one need a class -->
    9. <localColor:MyBkColorConverter1 x:Key="bkColorCvrt1"/> <!--Fehler-->
    10. <localColor:MyBkColorConverter2 x:Key="bkColorCvrt2"/><!--Fehler-->
    11. </Window.Resources>
    12. <DockPanel>
    13. <Grid DockPanel.Dock="Top" >
    14. <Grid.RowDefinitions>


    und neu erstellt. Trotzdem fehlen MyBKColorConverter1 und 2 immer noch.




    Ich stehe ein bischen auf dem Schlauch :?:
    Zeile 13 entfernt

    und hier der Code der Converterklasse

    VB.NET-Quellcode

    1. Imports System.Collections.Generic
    2. Imports System.Linq
    3. Imports System.Text
    4. Imports System.Threading.Tasks
    5. 'Imports DatagridBackground.Models
    6. Imports System.Windows.Data
    7. Imports System.Windows.Media
    8. Imports DatagridBackground.DatagridBackground.Models
    9. Imports System.Globalization
    10. Namespace DatagridBackground.Datagrid
    11. Public Class MyBkColorConverter1
    12. Implements IValueConverter
    13. Public Function Convert(value As Object, targetType As Type,
    14. parameter As Object, culture As System.Globalization.CultureInfo) As
    15. Object
    16. Dim obj As [Object] = value
    17. Dim t As Type = obj.[GetType]()
    18. If TypeOf value Is Model_Color Then
    19. Dim color As Model_Color = DirectCast(value, Model_Color)
    20. Return color.Color1
    21. End If
    22. Return Brushes.Green
    23. End Function
    24. Public Function ConvertBack(value As Object, targetType As Type,
    25. parameter As Object, culture As System.Globalization.CultureInfo) As
    26. Object
    27. Throw New NotImplementedException()
    28. End Function
    29. Private Function IValueConverter_Convert(value As Object,
    30. targetType As Type, parameter As Object, culture As CultureInfo) As
    31. Object Implements IValueConverter.Convert
    32. Throw New NotImplementedException()
    33. End Function
    34. Private Function IValueConverter_ConvertBack(value As Object,
    35. targetType As Type, parameter As Object, culture As CultureInfo) As
    36. Object Implements IValueConverter.ConvertBack
    37. Throw New NotImplementedException()
    38. End Function
    39. End Class
    40. End Namespace


    Hoppla, Fehler in der XAML weg.
    Aber beim Starten kommt:

    Die Exception ist doch offensichtlich. Du wirfst sie ja dort auch explizit. Beachte, dass nur die unteren Methoden die der Schnittstelle implementieren und daher die sind, die Du brauchst.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Fragen per PN, denn dafür ist das Forum da :!:
    Du hast den Converter von C# auf VB übersetzt, aber VB hat dir neue Methoden angeboten (siehe Zeile #34 und #40)...
    Also verschiebe den Code von Zeile #19-25 nach #37 und lösche die leeren Methodenrümpfe (siehe Zeile #16 und #28), die dir C# übersetzt hat..
    Hallo Trade, Hallo VB1963,

    danke für Eure Mühe. Da bin ich wohl auf den Übersetzer reingefallen. Aber wie Ihr das beschrieben habt war dann doch logisch. Manchmal ist das Leben eben schwer.

    Grüße aus Nürnberg. :) :rolleyes: