| 

.NET C# Java Javascript Exception

4
Kann ich XAML-Code irgendwie debuggen. Ich krieg nämlich eine Exception, wenn ich bestimmten XAML-Code schreibe und würde gern wissen, woran das liegt.
News:
26.03.2011
boogaboo 41 1 2
4 Antworten
3
Für Bindingprobleme reicht meist ein Blick in das Ausgabefenster (Output) von Visual Studio.

<TextBlock Text="{Binding ewwerwer}" />

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=ewwerwer'. BindingExpression:(no path); DataItem=null; target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
26.03.2011
Mario Priebe 6,0k 3 9
2
Ja, das geht über einen Umweg mit IValueConverter:

Dieses code-snippet kommt in eine Klasse. Das ist dein Debug-Code.

public class DebugConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
#endregion
}


Dieses code-snippet wird im XAML als Resource hinzugefügt:
<Window.Resources>
<conv:DebugConverter x:Key="debugConverter" />
</Window.Resources>


Dieses code-snippet erhält das Steuerelement zum Debuggen.
Converter={StaticResource debugConverter}}


Im DebugConverter kannst du dir die Werte ansehen.
26.03.2011
Jürgen Luhr 7,1k 2 9
2
Visual Studio 2010 bietet eine erweiterte Einstellung für WPF Tracing
unter Tools/Options/Debugging/Output Window findet man "WPF Trace Settings". Hier kann man neben DataBinding, auch andere tracelevels definieren.
Das hat mir bei den meisten XAML Problemen geholfen
29.03.2011
GerhardK 398 1 7
0
Hier wäre es interessant was für eine Exception bei welchem Xaml-Code auftritt.
Für Bindings löse ich das über eine AttachedProperty im XamlCode, ist ein alter Tip von Bea Stollnitz.

Das Prinzip geht so:
<Window xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"/>

<TextBlock Text="{Binding Path=Caption,
diagnostics:PresentationTraceSources.TraceLevel=High}" />


Wenn das Problem in einem Trigger auftaucht verwende ich die TriggerTracing-Klasse von WPFMentor, (download am Ende der Seite), die folgendermassen funktioniert:

<Trigger my:TriggerTracing.TriggerName="BoldWhenMouseIsOver"  
my:TriggerTracing.TraceEnabled="True"
Property="IsMouseOver"
Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>


Wenn das Problem ein logisches ist helfen oft Snoop bzw. Mole weiter.
Hast du in der Zwischenzeit etwas anderes gefunden? Wäre interessant wie deine Lösung aussieht.
30.05.2011
Sparky 109 3

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH