Laden...

Probleme mit Converter: 'local' ist ein undeklarierter Namespace.

Erstellt von lord_fritte vor 15 Jahren Letzter Beitrag vor 15 Jahren 4.323 Views
L
lord_fritte Themenstarter:in
553 Beiträge seit 2007
vor 15 Jahren
Probleme mit Converter: 'local' ist ein undeklarierter Namespace.

Hallo ich versuche mich gerade bei WPF mit Convertern, ich habe mir schon einige Beispiele angeschaut und überall finde ich sowas:


<Window.Resources>
    <local:PositionConverter x:Key="PositionConverter" />
  </Window.Resources>

Mein Problem ist aber dass mein Kompiler mir sagt: "'local' ist ein undeklarierter Namespace."
Was jetzt??

Hier mal mein Programm:
cs:


namespace WpfSamples.Windows.DataBinding
{
  /// <summary>
  /// Interaktionslogik für DataBindingConvertSample.xaml
  /// </summary>
  public partial class DataBindingConvertSample : Window
  {
    public DataBindingConvertSample()
    {
      InitializeComponent();
    }
  }

  public class DoubleConverter : IValueConverter
  {

    #region IValueConverter Member

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      double x;
      if(double.TryParse((string)value, out x))
        return x * 2.0;

      return null;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      double x;
      if (double.TryParse((string)value, out x))
        return x / 2.0;

      return null;
    }

    #endregion
  }
}

xaml:


<Window x:Class="WpfSamples.Windows.DataBinding.DataBindingConvertSample"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="DataBindingConvertSample" Height="300" Width="300">
    <Window.Resources>
        <local:DoubleConverter x:Name="converter" />
    </Window.Resources>
    <StackPanel>
        <TextBox Name="text1" FontSize="20" />
        <TextBox Name="text2" FontSize="20"
                 Text="{Binding ElementName=text1, Path=Text, Converter={StaticResource converter}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
    </StackPanel>
</Window>

946 Beiträge seit 2008
vor 15 Jahren

Du musst den Namespace local auch erst deklarieren.

<Window x:Class="PursuitDrift.MapEditor.MapEditor"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfSamples.Windows.DataBinding">
   <!-- ... -->
</Window>

Man auchte auf das :::{style="color: red;"}xmlns:local){red} 😉

mfg
SeeQuark

L
lord_fritte Themenstarter:in
553 Beiträge seit 2007
vor 15 Jahren

arg total übersheen.. Danke.

Jetzt bekomm ich aber das:
Alle zu "IDictionary" hinzugefügten Elemente müssen über ein Key-Attribut oder einen anderen ihnen zugeordneten Schlüsseltyp verfügen. Zeile 7 Position 10.
Die Elemente, die diesem Wörterbuch hinzugefügt werden, müssen über einen Schlüssel verfügen.

946 Beiträge seit 2008
vor 15 Jahren

Vieleicht mit dem hinzufügen von x:Key?!?
Beachte auch [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)

Schnapp dir mal einen guten Artikel über XAML. Vielleicht findest du im [Artikel] Einführung in die WPF(Windows Presentation Foundation) - aktuell Teil 3: Beispielanwendung etwas.

mfg
SeeQuark

L
lord_fritte Themenstarter:in
553 Beiträge seit 2007
vor 15 Jahren

Beide Fehler beziehen sich auf dies: <local:DoubleConverter x:Name="converter" />

EDIT: Ok ich musste nur x:Key hinzufügen, warum auch immer..

F
722 Beiträge seit 2005
vor 15 Jahren

Hallo lord_fritte,

EDIT: Ok ich musste nur x:Key hinzufügen, warum auch immer..

ResourceDictionary implementiert IDicationary<object, object>. Man kann IDictionary<TKey,TValue> keine Werte hinzufügen, ohne einen Key anzugeben. Von daher macht die Fehlermeldung durchaus Sinn.

Gruß,
feadur