[英]Custom Window Style not showing in design view
我正在嘗試在 VS2019(.NET Core 3.1)的 WPF 應用程序中自定義 window 樣式。 我正在關注一個視頻,目前將樣式直接添加到MainWindow.xaml
。 我的風格沒有出現在 XAML 設計視圖中(在視頻中),但是,風格在運行時正確顯示。
所有其他 styles 顯示正常。 我四處尋找可能是我在其他地方設置的 window 樣式,但我什么也沒找到。 起初,我在內部<WindowChrome.../>
上遇到錯誤,說“'Microsoft.VisualStudio.XSurface.Wpf.Window' 類型的對象不能轉換為'System.Windows.Window'類型”但是那個問題似乎已經解決了自己。 我不確定這是否相關或線索。
知道發生了什么以及如何解決它嗎? 或者也許是一種強制采用設計時風格的技巧,這樣我就可以看到我在做什么?
代碼:
<Window x:Class="FirmwareUpdater.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FirmwareUpdater"
xmlns:vm="clr-namespace:FirmwareUpdater.ViewModels"
mc:Ignorable="d"
WindowStyle="None"
WindowStartupLocation="CenterScreen"
x:Name="AppWindow"
Title="Firmware Updater"
Height="600" Width="800">
<Window.Resources>
<Style TargetType="{x:Type local:MainWindow}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Border Background="Gray" Padding="{Binding OuterMarginSize, FallbackValue=10}">
<Grid Background="Red">
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<WindowChrome.WindowChrome>
<WindowChrome
CaptionHeight="{Binding TitleHeight}"
ResizeBorderThickness="0"
GlassFrameThickness="0"
CornerRadius="0"/>
</WindowChrome.WindowChrome>
<Grid>
<!-- Displays pages for navigation-->
<Frame x:Name="mainFrame"
MaxHeight="600" MaxWidth="800" Margin="0,0,0,0"
NavigationUIVisibility="Hidden" />
</Grid>
</Window>
最近,我在關注這個系列教程時也遇到了這個問題,無論我使用哪個設計器:NetFramework 或 NetCore。 對我來說,在設計時查看更改的唯一方法是使用 Window.Resources 中的鍵定義 ControlTemplate 並將 Window 的模板設置為 DynamicResource:
<Window ...
Template="{DynamicResource WindowBase}">
<Window.Resources>
<ControlTemplate x:Key="WindowBase" TargetType="{x:Type Window}">
</ControlTemplate>
</Window.Resources>
</Window>
我不知道這個解決方案有多可靠,但至少我不必運行我的應用程序來查看更改。
編輯
您還可以將 ControlTemplate 從 Window.Resources 移動到某個 ResourceDictionary 並將其設置為 Window 模板的 StaticResource。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.