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>
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
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.
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
Beide Fehler beziehen sich auf dies: <local:DoubleConverter x:Name="converter" />
EDIT: Ok ich musste nur x:Key hinzufügen, warum auch immer..
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