Fix reload of XAML pages including other local views

Closes #20
This commit is contained in:
Andoni Morales Alastruey 2018-11-08 21:33:48 +01:00
Родитель 9cd658c65c
Коммит db86b6aa2e
9 изменённых файлов: 70 добавлений и 1 удалений

Просмотреть файл

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="XAMLator.SampleApp.LabelView">
<ContentView.Content>
<Label Text="{Binding Description}"/>
</ContentView.Content>
</ContentView>

Просмотреть файл

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using Xamarin.Forms;
namespace XAMLator.SampleApp
{
public partial class LabelView : ContentView
{
public LabelView()
{
InitializeComponent();
}
}
}

Просмотреть файл

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:cv="clr-namespace:XAMLator.SampleApp"
x:Class="XAMLator.SampleApp.PageWithNestedView">
<ContentPage.Content>
<cv:LabelView/>
</ContentPage.Content>
</ContentPage>

Просмотреть файл

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using Xamarin.Forms;
namespace XAMLator.SampleApp
{
public partial class PageWithNestedView : ContentPage
{
public PageWithNestedView()
{
InitializeComponent();
}
}
}

Просмотреть файл

@ -20,6 +20,14 @@
<SubType>Designer</SubType>
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)LabelView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)PageWithNestedView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)App.xaml.cs">
@ -34,5 +42,11 @@
<Compile Include="$(MSBuildThisFileDirectory)PageWithCSS.xaml.cs">
<DependentUpon>PageWithCSS.xaml</DependentUpon>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)LabelView.xaml.cs">
<DependentUpon>LabelView.xaml</DependentUpon>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)PageWithNestedView.xaml.cs">
<DependentUpon>PageWithNestedView.xaml</DependentUpon>
</Compile>
</ItemGroup>
</Project>

Просмотреть файл

@ -172,6 +172,14 @@ namespace XAMLator.Client
/// <value><c>true</c> if needs rebuild; otherwise, <c>false</c>.</value>
public bool NeedsRebuild { get; private set; }
/// <summary>
/// Gets the xaml resource identifier.
/// </summary>
/// <value>The xaml resource identifier.</value>
// FIXME: This must be retrieved using the XamlResourceIdAttribute in the autogenerated
// code behind
public string XamlResourceId => xamlFilePath != null ? Path.GetFileName(xamlFilePath) : null;
string CurrentClassName => counter == 0 ? ClassName : $"{ClassName}{counter}";
string CurrentFullNamespace
@ -252,6 +260,7 @@ namespace XAMLator.Client
FindSymbol();
FillName();
FillNamespace();
FillSources();
NeedsClassInitialization = false;
}

Просмотреть файл

@ -49,6 +49,7 @@ namespace XAMLator.Client
NeedsRebuild = classDecl.NeedsRebuild,
NewTypeExpression = classDecl.NewInstanceExpression,
Xaml = classDecl.Xaml,
XamlResourceName = classDecl.XamlResourceId,
StyleSheets = classDecl.StyleSheets
};

Просмотреть файл

@ -12,6 +12,7 @@ namespace XAMLator
public string Xaml;
public Dictionary<string, string> StyleSheets;
public bool NeedsRebuild;
public string XamlResourceName;
}
public class EvalMessage : INotifyPropertyChanged

Просмотреть файл

@ -131,7 +131,7 @@ namespace XAMLator.Server
static string LoadResource(AssemblyName assemblyName, string name)
{
Log.Information($"Resolving resource {name}");
if (name.EndsWith(".xaml"))
if (name == currentEvalRequest.XamlResourceName)
{
return currentEvalRequest.Xaml;
}