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

12
samples/XamlDesigner/DocumentView.xaml.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.XamlDesigner @@ -25,7 +25,7 @@ namespace ICSharpCode.XamlDesigner
InitializeComponent();
Document = doc;
Shell.Instance.Views[doc] = this;
Shell.Instance.Views[doc] = this;
//uxTextEditor.DataBindings.Add("Text", doc, "Text", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);
Document.Mode = DocumentMode.Design;
@ -52,7 +52,15 @@ namespace ICSharpCode.XamlDesigner @@ -52,7 +52,15 @@ namespace ICSharpCode.XamlDesigner
try {
uxTextEditor.ScrollTo(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
}
}

29
samples/XamlDesigner/ErrorListView.xaml

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

Loading…
Cancel
Save