Noobie espace de noms WPF et problème de convertisseur
-
23-09-2019 - |
Question
S'il vous plaît pardonnez la question noob mais je vais tourner en rond et ont besoin de réponses ...
De toute façon, je l'ai regardé cet article WPF: Comment de se lier à un RadioButtons ENUM? mais je ne peux pas obtenir le convertisseur d'être reconnu dans le fichier XAML.
<Window x:Class="Widget.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit"
Title="Widget" Height="366" Width="588" WindowStyle="SingleBorderWindow">
<Window.Resources>
<EnumBooleanConverter x:Key="enumBooleanConverter" />
</Window.Resources>
...
J'ai un fichier séparé en maintenant la classe EnumBooleanConverter mais la référence ci-dessus me donne l'erreur suivante:
Erreur 1 La balise 'EnumBooleanConverter' n'existe pas dans l'espace de noms XML « http: / /schemas.microsoft.com/winfx/2006/xaml/presentation .
Je l'ai essayé d'ajouter des références à l'assemblage puis annexant l'étiquette du XAML, mais en vain.
<Window x:Class="Widget.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:local="clr-namespace:Widget;assembly=Widget"
Title="Widget" Height="366" Width="588" WindowStyle="SingleBorderWindow">
<Window.Resources>
<local:EnumBooleanConverter x:Key="enumBooleanConverter" />
</Window.Resources>
...
Toute aide serait grandement appréciée.
La solution
Après beaucoup gratter la tête (et une bonne quantité de crier à l'écran), je l'ai identifié le problème.
Il se trouve que l'espace de noms identifiant ne devrait pas avoir l'ensemble.
Je définissait comme ça
xmlns:local="clr-namespace:Widget;assembly=Widget"
... Mais il aurait juste été comme ça
xmlns:local="clr-namespace:Widget"
Autres conseils
Assurez-vous que EnumBooleanConverter est accessible au public et il a un constructeur public vide.