Browse Source

XAML Designer Sample -> Better Error Display

pull/586/head
jogibear9988 11 years ago
parent
commit
42c60c809b
  1. 4
      samples/XamlDesigner/DocumentView.xaml
  2. 12
      samples/XamlDesigner/DocumentView.xaml.cs
  3. 29
      samples/XamlDesigner/ErrorListView.xaml

4
samples/XamlDesigner/DocumentView.xaml

@ -13,10 +13,10 @@
<Grid> <Grid>
<AvalonEdit:TextEditor <AvalonEdit:TextEditor
x:Name="uxTextEditor" x:Name="uxTextEditor"
SyntaxHighlighting="XML" SyntaxHighlighting="XML" ShowLineNumbers="True"
Visibility="{Binding InXamlMode, Converter={StaticResource CollapsedWhenFalse}}" /> Visibility="{Binding InXamlMode, Converter={StaticResource CollapsedWhenFalse}}" />
<ContentPresenter Content="{Binding DesignSurface}" <ContentPresenter Content="{Binding DesignSurface}"
Visibility="{Binding InDesignMode, Converter={StaticResource CollapsedWhenFalse}}"/> Visibility="{Binding InDesignMode, Converter={StaticResource CollapsedWhenFalse}}"/>
</Grid> </Grid>
</DockPanel> </DockPanel>
</UserControl> </UserControl>

12
samples/XamlDesigner/DocumentView.xaml.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.XamlDesigner
InitializeComponent(); InitializeComponent();
Document = doc; Document = doc;
Shell.Instance.Views[doc] = this; Shell.Instance.Views[doc] = this;
//uxTextEditor.DataBindings.Add("Text", doc, "Text", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged); //uxTextEditor.DataBindings.Add("Text", doc, "Text", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);
Document.Mode = DocumentMode.Design; Document.Mode = DocumentMode.Design;
@ -52,7 +52,15 @@ namespace ICSharpCode.XamlDesigner
try { try {
uxTextEditor.ScrollTo(error.Line, error.Column); uxTextEditor.ScrollTo(error.Line, error.Column);
uxTextEditor.CaretOffset = uxTextEditor.Document.GetOffset(error.Line, error.Column); uxTextEditor.CaretOffset = uxTextEditor.Document.GetOffset(error.Line, error.Column);
} catch (ArgumentException) {
int n = 0;
char chr;
while ((chr = uxTextEditor.Document.GetCharAt(uxTextEditor.CaretOffset + n)) != ' ' && chr != '.' && chr != '<' && chr != '>' && chr != '"')
{ n++; }
uxTextEditor.SelectionLength = n;
}
catch (ArgumentException) {
// invalid line number // invalid line number
} }
} }

29
samples/XamlDesigner/ErrorListView.xaml

@ -2,15 +2,22 @@
xmlns="http://schemas.microsoft.com/netfx/2007/xaml/presentation" xmlns="http://schemas.microsoft.com/netfx/2007/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Services="clr-namespace:ICSharpCode.WpfDesign.Designer.Services;assembly=ICSharpCode.WpfDesign.Designer"> xmlns:Services="clr-namespace:ICSharpCode.WpfDesign.Designer.Services;assembly=ICSharpCode.WpfDesign.Designer">
<Control.Resources> <Control.Resources>
<DataTemplate DataType="{x:Type Services:XamlError}"> <DataTemplate DataType="{x:Type Services:XamlError}">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Image Source="Images/Error.png" <Image Source="Images/Error.png"
Stretch="None" Stretch="None"
Margin="2"/> Margin="2"/>
<TextBlock Text="{Binding Message}" <TextBlock TextAlignment="Right" Text="{Binding Line}" Width="25"
VerticalAlignment="Center"/> VerticalAlignment="Center"/>
</StackPanel> <TextBlock Text=" / "
</DataTemplate> VerticalAlignment="Center"/>
</Control.Resources> <TextBlock Text="{Binding Column}" Width="25"
VerticalAlignment="Center"/>
<TextBlock Text=" - " />
<TextBlock Text="{Binding Message}"
VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</Control.Resources>
</ListBox> </ListBox>

Loading…
Cancel
Save