|
|
|
@ -87,19 +87,28 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions |
|
|
|
if (string.IsNullOrWhiteSpace(path) || path == ".") |
|
|
|
{ |
|
|
|
result.Path = string.Empty; |
|
|
|
return result; |
|
|
|
} |
|
|
|
else if (path.StartsWith("#")) |
|
|
|
else if (path.StartsWith("!")) |
|
|
|
{ |
|
|
|
int pathStart = 0; |
|
|
|
for (; pathStart < path.Length && path[pathStart] == '!'; ++pathStart); |
|
|
|
result.Path = path.Substring(0, pathStart); |
|
|
|
path = path.Substring(pathStart); |
|
|
|
} |
|
|
|
|
|
|
|
if (path.StartsWith("#")) |
|
|
|
{ |
|
|
|
var dot = path.IndexOf('.'); |
|
|
|
|
|
|
|
if (dot != -1) |
|
|
|
{ |
|
|
|
result.Path = path.Substring(dot + 1); |
|
|
|
result.Path += path.Substring(dot + 1); |
|
|
|
result.ElementName = path.Substring(1, dot - 1); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
result.Path = string.Empty; |
|
|
|
result.Path += string.Empty; |
|
|
|
result.ElementName = path.Substring(1); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -114,12 +123,12 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions |
|
|
|
string relativeSourceMode; |
|
|
|
if (dot != -1) |
|
|
|
{ |
|
|
|
result.Path = path.Substring(dot + 1); |
|
|
|
result.Path += path.Substring(dot + 1); |
|
|
|
relativeSourceMode = path.Substring(1, dot - 1); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
result.Path = string.Empty; |
|
|
|
result.Path += string.Empty; |
|
|
|
relativeSourceMode = path.Substring(1); |
|
|
|
} |
|
|
|
|
|
|
|
@ -170,7 +179,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
result.Path = path; |
|
|
|
result.Path += path; |
|
|
|
} |
|
|
|
|
|
|
|
return result; |
|
|
|
@ -229,4 +238,4 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions |
|
|
|
|
|
|
|
public RelativeSource RelativeSource { get; set; } |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|