diff --git a/Bililive_dm/App.xaml b/Bililive_dm/App.xaml
index 1613cad..adaebea 100644
--- a/Bililive_dm/App.xaml
+++ b/Bililive_dm/App.xaml
@@ -15,6 +15,7 @@
+
diff --git a/Bililive_dm/App.xaml.cs b/Bililive_dm/App.xaml.cs
index ff9d7fc..b59b341 100644
--- a/Bililive_dm/App.xaml.cs
+++ b/Bililive_dm/App.xaml.cs
@@ -23,6 +23,7 @@ namespace Bililive_dm
///
public partial class App: Application
{
+ internal ResourceDictionary AeroWin8 { get; private set; }
internal Collection merged { get; private set; }
public App()
@@ -92,6 +93,38 @@ private void AddArchSpecificDirectory()
private void Application_Startup(object sender, StartupEventArgs e)
{
+ var assemblies = new Dictionary(StringComparer.OrdinalIgnoreCase);
+
+ AppDomain.CurrentDomain.AssemblyResolve += (_, args) =>
+ {
+ var an = new AssemblyName(args.Name);
+ var name = an.Name;
+
+ switch (name)
+ {
+ case "PresentationTheme.Aero":
+ case "PresentationTheme.Aero.Win8":
+ break;
+ default:
+ return null;
+ }
+
+ if (assemblies.TryGetValue(name, out var assembly)) return assembly;
+
+ var ms = new MemoryStream();
+ using (var rs = Assembly.GetExecutingAssembly().GetManifestResourceStream($"Bililive_dm.Assets.{name}.dll.gz"))
+ using (var zs = new GZipStream(rs, CompressionMode.Decompress))
+ zs.CopyTo(ms);
+
+ var data = new byte[ms.Length];
+ ms.Position = 0;
+ ms.Read(data, 0, data.Length);
+
+ return assemblies[name] = Assembly.Load(data);
+ };
+
+ AeroWin8 = (ResourceDictionary)Resources["Win8"];
+
merged = Resources.MergedDictionaries;
merged.Add((ResourceDictionary)Resources["Default"]);
}
diff --git a/Bililive_dm/Assets/PresentationTheme.Aero.Win8.dll.gz b/Bililive_dm/Assets/PresentationTheme.Aero.Win8.dll.gz
new file mode 100644
index 0000000..1e02ddb
Binary files /dev/null and b/Bililive_dm/Assets/PresentationTheme.Aero.Win8.dll.gz differ
diff --git a/Bililive_dm/Assets/PresentationTheme.Aero.dll.gz b/Bililive_dm/Assets/PresentationTheme.Aero.dll.gz
new file mode 100644
index 0000000..7c2fd33
Binary files /dev/null and b/Bililive_dm/Assets/PresentationTheme.Aero.dll.gz differ
diff --git a/Bililive_dm/Bililive_dm.csproj b/Bililive_dm/Bililive_dm.csproj
index a07b4ba..3f0ca40 100644
--- a/Bililive_dm/Bililive_dm.csproj
+++ b/Bililive_dm/Bililive_dm.csproj
@@ -278,6 +278,8 @@
Settings.Designer.cs
+
+
diff --git a/Bililive_dm/MainWindow.xaml.cs b/Bililive_dm/MainWindow.xaml.cs
index ff3733f..9edeca2 100644
--- a/Bililive_dm/MainWindow.xaml.cs
+++ b/Bililive_dm/MainWindow.xaml.cs
@@ -1603,6 +1603,14 @@ private void Skin_Click(object sender, RoutedEventArgs e)
if (selector.Select() is ResourceDictionary result)
{
App.Current.merged[0] = result;
+
+ if (result != App.Current.AeroWin8) return;
+
+ Skin.Click -= Skin_Click;
+
+ Skin.ToolTip = "既然被你發現了,就不能輕易讓你離開了!";
+ ToolTipService.SetShowOnDisabled(Skin, true);
+ Skin.IsEnabled = false;
}
merged[0] = new ResourceDictionary();
}
diff --git a/Bililive_dm/Selector.xaml.cs b/Bililive_dm/Selector.xaml.cs
index f36711f..fe1a466 100644
--- a/Bililive_dm/Selector.xaml.cs
+++ b/Bililive_dm/Selector.xaml.cs
@@ -64,7 +64,7 @@ private void Button_Click(object sender, RoutedEventArgs e)
public ResourceDictionary Select()
{
if (!ShowDialog().GetValueOrDefault()) return null;
- return selected ?? new ResourceDictionary();
+ return selected ?? App.Current.AeroWin8;
}
private void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -80,7 +80,7 @@ private void list_MouseDoubleClick(object sender, MouseButtonEventArgs e)
private void list_Loaded(object sender, RoutedEventArgs e)
{
var li = (UIElement)list.ItemContainerGenerator.ContainerFromItem(list.SelectedItem);
- li?.Focus();
+ li.Focus();
}
}
}