Html Generator (Added CefSharp / Chrome)
Updated Result API with Tournament Urls Updated Setup
This commit is contained in:
@@ -5,6 +5,8 @@ using System.Data;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using CefSharp;
|
||||
using CefSharp.Wpf;
|
||||
|
||||
namespace LaDOSE.DesktopApp
|
||||
{
|
||||
@@ -13,5 +15,20 @@ namespace LaDOSE.DesktopApp
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
protected override void OnStartup(StartupEventArgs e)
|
||||
{
|
||||
#if DEBUG
|
||||
|
||||
MessageBox.Show("WAITING IN DEBUG MODE");
|
||||
#endif
|
||||
base.OnStartup(e);
|
||||
|
||||
|
||||
var settings = new CefSettings();
|
||||
settings.SetOffScreenRenderingBestPerformanceArgs();
|
||||
Cef.Initialize(settings);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
71
LaDOSE.Src/LaDOSE.DesktopApp/Behaviors/HtmlBehavior.cs
Normal file
71
LaDOSE.Src/LaDOSE.DesktopApp/Behaviors/HtmlBehavior.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Interactivity;
|
||||
using System.Windows.Threading;
|
||||
using CefSharp;
|
||||
using CefSharp.Wpf;
|
||||
|
||||
namespace LaDOSE.DesktopApp.Behaviors
|
||||
{
|
||||
public static class HtmlBehavior // : Behavior<ChromiumWebBrowser>
|
||||
{
|
||||
#region DependencyProperties
|
||||
|
||||
public static readonly DependencyProperty HtmlProperty =
|
||||
DependencyProperty.RegisterAttached("Html", typeof(string), typeof(HtmlBehavior),
|
||||
new PropertyMetadata("",OnHtmlChange));
|
||||
|
||||
private static void OnHtmlChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (d is ChromiumWebBrowser)
|
||||
{
|
||||
var cwb = ((ChromiumWebBrowser) d);
|
||||
string html = e.NewValue as string;
|
||||
if (!string.IsNullOrEmpty(html))
|
||||
|
||||
Application.Current.Dispatcher.Invoke(()=>
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
if (cwb.IsBrowserInitialized)
|
||||
{
|
||||
cwb.LoadHtml(html, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
cwb.IsBrowserInitializedChanged += CwbOnIsBrowserInitializedChanged;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private static void CwbOnIsBrowserInitializedChanged(object sender, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
var cwb = ((ChromiumWebBrowser)sender);
|
||||
var html = GetHtml(cwb);
|
||||
cwb.LoadHtml(html, false);
|
||||
cwb.IsBrowserInitializedChanged -= CwbOnIsBrowserInitializedChanged;
|
||||
}
|
||||
|
||||
public static string GetHtml(DependencyObject obj)
|
||||
{
|
||||
return (string)obj.GetValue(HtmlProperty);
|
||||
}
|
||||
|
||||
public static void SetHtml(DependencyObject obj, string value)
|
||||
{
|
||||
obj.SetValue(HtmlProperty, value);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Windows;
|
||||
using System.Windows.Threading;
|
||||
using Caliburn.Micro;
|
||||
|
||||
using LaDOSE.DesktopApp.ViewModels;
|
||||
@@ -53,5 +54,11 @@ namespace LaDOSE.DesktopApp
|
||||
container.BuildUp(instance);
|
||||
|
||||
}
|
||||
|
||||
protected override void OnUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
|
||||
{
|
||||
MessageBox.Show(e.Exception.Message, sender.ToString());
|
||||
base.OnUnhandledException(sender, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props" Condition="Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props')" />
|
||||
<Import Project="..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props')" />
|
||||
<Import Project="..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props')" />
|
||||
<Import Project="..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
@@ -30,9 +34,11 @@
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
@@ -42,7 +48,7 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
@@ -56,6 +62,15 @@
|
||||
<PropertyGroup>
|
||||
<NoWin32Manifest>true</NoWin32Manifest>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<OutputPath>bin\x64\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<OutputPath>bin\x64\Release\</OutputPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Caliburn.Micro, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Caliburn.Micro.Core.3.2.0\lib\net45\Caliburn.Micro.dll</HintPath>
|
||||
@@ -99,6 +114,7 @@
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="Behaviors\HtmlBehavior.cs" />
|
||||
<Compile Include="Behaviors\TextBoxInputRegExBehaviour.cs" />
|
||||
<Compile Include="Behaviors\MultiSelectorBehaviours.cs" />
|
||||
<Compile Include="Bootstrapper.cs" />
|
||||
@@ -224,4 +240,17 @@
|
||||
<Folder Include="Services\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props'))" />
|
||||
<Error Condition="!Exists('..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props'))" />
|
||||
<Error Condition="!Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets')" />
|
||||
<Import Project="..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets" Condition="Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets')" />
|
||||
</Project>
|
||||
@@ -22,8 +22,16 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
public override string DisplayName => "Tournament Result";
|
||||
|
||||
private RestService RestService { get; set; }
|
||||
Dictionary<string, Dictionary<int, int>> _computedResult;
|
||||
|
||||
#region Properties
|
||||
|
||||
private string css = "strong { font-weight: 700;} " +
|
||||
"a { color: #ff9024;}"+
|
||||
"body { color: #efefef;background-color: #141415; }" +
|
||||
""+
|
||||
"a:hover, .entry-meta span a:hover, .comments-link a:hover, body.coldisplay2 #front-columns a:active {color: #cb5920;}"+
|
||||
"tr td { border: 1px dashed #3D3D3D;} ";
|
||||
private String _selectRegex;
|
||||
|
||||
public String SelectRegex
|
||||
@@ -36,10 +44,33 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
private String _html;
|
||||
|
||||
public String Html
|
||||
{
|
||||
get { return $"<html><head><style>{this.css}</style></head><body>{HtmlContent}</body></html>"; }
|
||||
set
|
||||
{
|
||||
_html = value;
|
||||
}
|
||||
}
|
||||
private String _htmlContent;
|
||||
|
||||
public String HtmlContent
|
||||
{
|
||||
get { return _htmlContent; }
|
||||
set
|
||||
{
|
||||
_htmlContent = value;
|
||||
NotifyOfPropertyChange(() => HtmlContent);
|
||||
NotifyOfPropertyChange(() => Html);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private DateTime _from;
|
||||
|
||||
|
||||
public DateTime From
|
||||
{
|
||||
get { return _from; }
|
||||
@@ -51,6 +82,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
}
|
||||
|
||||
private DateTime _to;
|
||||
|
||||
public DateTime To
|
||||
{
|
||||
get { return _to; }
|
||||
@@ -130,6 +162,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public TournamentResultViewModel(RestService restService)
|
||||
{
|
||||
this.RestService = restService;
|
||||
@@ -137,11 +170,10 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
Tournaments = new List<TournamentDTO>();
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void OnInitialize()
|
||||
{
|
||||
this.To=DateTime.Now;
|
||||
this.To = DateTime.Now;
|
||||
this.From = DateTime.Now.AddMonths(-1);
|
||||
this.SelectRegex = "Ranking";
|
||||
LoadTournaments();
|
||||
@@ -158,7 +190,6 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
|
||||
NotifyOfPropertyChange("Tournaments");
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public DataTable GridDataTable
|
||||
@@ -179,41 +210,43 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
var resultsDto = this.RestService.GetResults(tournamentsIds);
|
||||
this.Results = resultsDto;
|
||||
ComputeDataGrid();
|
||||
ComputeHtml();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void SelectYear()
|
||||
{
|
||||
this.To = DateTime.Now;
|
||||
this.From = new DateTime(DateTime.Now.Year,1,1);
|
||||
|
||||
this.From = new DateTime(DateTime.Now.Year, 1, 1);
|
||||
}
|
||||
|
||||
public void SelectMonth()
|
||||
{
|
||||
this.To = DateTime.Now;
|
||||
this.From = DateTime.Now.AddMonths(-1);
|
||||
}
|
||||
|
||||
public void SelectRegexp()
|
||||
{
|
||||
var selectedTournaments = this.Tournaments.Where(e => Regex.IsMatch(e.Name, this.SelectRegex)).ToList();
|
||||
this.SelectedTournaments.Clear();
|
||||
if(selectedTournaments.Count>0)
|
||||
selectedTournaments.ForEach(e=>this.SelectedTournaments.AddUI(e));
|
||||
|
||||
if (selectedTournaments.Count > 0)
|
||||
selectedTournaments.ForEach(e => this.SelectedTournaments.AddUI(e));
|
||||
}
|
||||
|
||||
private void ComputeDataGrid()
|
||||
{
|
||||
var resultsParticipents = this.Results.Participents.OrderBy(e => e.Name).ToList();
|
||||
var computed = ResultsToDataDictionary(resultsParticipents);
|
||||
|
||||
_computedResult = ResultsToDataDictionary(resultsParticipents);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
DataTable grid = new DataTable();
|
||||
var games = Results.Games.Distinct().OrderBy(e=>e.Order).ToList();
|
||||
var games = Results.Games.Distinct().OrderBy(e => e.Order).ToList();
|
||||
grid.Columns.Add("Players");
|
||||
games.ForEach(e => grid.Columns.Add(e.Name.Replace('.',' ')));
|
||||
games.ForEach(e => grid.Columns.Add(e.Name.Replace('.', ' ')));
|
||||
grid.Columns.Add("Total").DataType = typeof(Int32);
|
||||
|
||||
|
||||
@@ -223,13 +256,12 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
var resultsParticipent = resultsParticipents[i];
|
||||
int total = 0;
|
||||
dataRow["Players"] = resultsParticipent.Name;
|
||||
|
||||
|
||||
|
||||
for (int j = 0; j < games.Count; j++)
|
||||
{
|
||||
var resultsGame = Results.Games[j];
|
||||
var dictionary = computed[resultsParticipent.Name];
|
||||
var dictionary = _computedResult[resultsParticipent.Name];
|
||||
if (dictionary.ContainsKey(resultsGame.Id))
|
||||
{
|
||||
int points = dictionary[resultsGame.Id];
|
||||
@@ -240,7 +272,7 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
else
|
||||
dataRow[resultsGame.Name.Replace('.', ' ')] = null;
|
||||
}
|
||||
|
||||
|
||||
dataRow["Total"] = total;
|
||||
}
|
||||
|
||||
@@ -259,8 +291,6 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
|
||||
private void ExportToCSV()
|
||||
{
|
||||
|
||||
|
||||
if (this.GridDataTable != null)
|
||||
{
|
||||
var dataTable = this.GridDataTable.DefaultView.ToTable();
|
||||
@@ -290,6 +320,48 @@ namespace LaDOSE.DesktopApp.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
private void ComputeHtml()
|
||||
{
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("<table style=\"text-align: center; margin-top: 15px;\" align=\"center\"><tbody>");
|
||||
|
||||
int columns = 0;
|
||||
foreach (var game in Results.Games)
|
||||
{
|
||||
|
||||
if (columns % 2 == 0)
|
||||
{
|
||||
sb.Append("<tr>");
|
||||
}
|
||||
columns++;
|
||||
sb.Append("<td colspan=\"1\" width=\"50 % \">" +
|
||||
"<span style=\"color: #ff0000;\">" +
|
||||
$"<strong>{game.LongName} ({Results.Results.Count(e => e.GameId == game.Id)} participants) :</strong>" +
|
||||
"</span>");
|
||||
List<ResultDTO> enumerable = Results.Results.Where(r => r.GameId == game.Id).ToList();
|
||||
List<string> top3 = enumerable.OrderByDescending(e => e.Point).Take(3).Select(e => e.Player).ToList();
|
||||
sb.AppendLine($"<br> 1/ {top3[0]}<br> 2/ {top3[1]}<br> 3/ {top3[2]}<p></p>");
|
||||
sb.AppendLine($"<a href=\"https://challonge.com/fr/{enumerable.First().TournamentUrl}\" target=\"_blank\">https://challonge.com/fr/{enumerable.First().TournamentUrl}</a></p></td>");
|
||||
if (columns % 2 == 0)
|
||||
{
|
||||
sb.Append("</tr>");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
sb.Append("</table>");
|
||||
|
||||
|
||||
this.HtmlContent = sb.ToString();
|
||||
|
||||
}
|
||||
public void CopyHtml()
|
||||
{
|
||||
System.Windows.Clipboard.SetText(this.HtmlContent);
|
||||
}
|
||||
|
||||
private Dictionary<string, Dictionary<int, int>> ResultsToDataDictionary(
|
||||
List<ParticipentDTO> resultsParticipents)
|
||||
{
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="Auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
@@ -62,12 +64,14 @@
|
||||
</behaviors:TextBoxInputRegExBehaviour>
|
||||
</i:Interaction.Behaviors>
|
||||
</TextBox>
|
||||
<Label Grid.Row="4" Grid.Column="0">LongName</Label>
|
||||
<TextBox Grid.Row="4" Grid.Column="1" Text="{Binding Path=CurrentGame.LongName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
|
||||
|
||||
<Label Grid.Row="4" Grid.Column="0">WpTag</Label>
|
||||
<TextBox Grid.Row="5" Grid.ColumnSpan="2" Text="{Binding Path=CurrentGame.WordPressTag,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
|
||||
<Label Grid.Row="5" Grid.Column="0">WpTag</Label>
|
||||
<TextBox Grid.Row="5" Grid.Column="1" Text="{Binding Path=CurrentGame.WordPressTag,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
|
||||
<Label Grid.Row="6" Grid.Column="0">WpTagOs</Label>
|
||||
<TextBox Grid.Row="7" Grid.ColumnSpan="2" Text="{Binding Path=CurrentGame.WordPressTagOs,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
|
||||
<Button Grid.Row="8" Grid.ColumnSpan="2" x:Name="Update">Update</Button>
|
||||
<TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Path=CurrentGame.WordPressTagOs,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
|
||||
<Button Grid.Row="9" Grid.ColumnSpan="2" x:Name="Update">Update</Button>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
xmlns:cal="http://www.caliburnproject.org"
|
||||
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||
xmlns:behaviors="clr-namespace:LaDOSE.DesktopApp.Behaviors"
|
||||
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
|
||||
mc:Ignorable="d"
|
||||
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
@@ -161,6 +162,12 @@
|
||||
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="HTML">
|
||||
<DockPanel>
|
||||
<Button x:Name="CopyHtml" DockPanel.Dock="Top"> Copy HTML to clipboard </Button>
|
||||
<cefSharp:ChromiumWebBrowser behaviors:HtmlBehavior.Html="{Binding Html}" />
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
||||
<Button Grid.Row="4" Grid.ColumnSpan="3" x:Name="Export">Export</Button>
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
<packages>
|
||||
<package id="Caliburn.Micro" version="3.2.0" targetFramework="net461" />
|
||||
<package id="Caliburn.Micro.Core" version="3.2.0" targetFramework="net461" />
|
||||
<package id="cef.redist.x64" version="73.1.13" targetFramework="net461" />
|
||||
<package id="cef.redist.x86" version="73.1.13" targetFramework="net461" />
|
||||
<package id="CefSharp.Common" version="73.1.130" targetFramework="net461" />
|
||||
<package id="CefSharp.Wpf" version="73.1.130" targetFramework="net461" />
|
||||
<package id="RestSharp" version="106.6.9" targetFramework="net461" />
|
||||
<package id="WPFThemes.DarkBlend" version="1.0.8" targetFramework="net461" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user