我正在使用 WPF 工具包和 WPF 工具包扩展,并注意到当我通过以下方式显示消息框时:
MessageBox.Show("...");
我得到以下信息...
我想让我的主应用程序窗口也使用这种样式。有办法做到吗?
编辑:我尝试过 WindowStyle="ToolWindow"但它不起作用。
编辑:针对以下答案,请参见下图:
此外,我希望它有一个最大化和最小化按钮,但与关闭按钮具有相同的样式。
谢谢!
最佳答案
你的问题很模糊。您没有在任何地方说出您想要 MessageBox 样式的哪一部分,但我想我知道您在问什么(相同的颜色和窗口镶边)。
由于您使用的是 MessageBox 的扩展工具包版本,因此您有两个选择。
首先,您可以切换 Xaml 中的每个 Window
实例,并将其替换为 extToolkit:ChildWindow
(extToolkit 的命名空间为 xmlns:extToolkit= “http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended”)。
这是一个快捷的选择,但会让您陷入困境。 ChildWindow 中缺少 Title
,而是使用 Caption
。如果您不对 Windows 本身进行太多操作,这对您来说可能就足够了。
您的第二个选项是使用 MessageBox 或 ChildWindow 模板中的相同样式信息来模板 Window
本身。扩展工具包 ChildWindow 的模板位于本答案的底部,但需要进行一些修改才能与 Window 的属性保持一致。您还必须隐藏窗口镶边并拥有无边框表单,因为镶边是在模板中实现的。
这不是最好的情况,说实话,扩展工具包应该有自己的 Window 实现。
如果我是您,我会尝试将 Windows 切换为 ChildWindows 来启动。
HTH。
这是该模板 -
<ControlTemplate x:Key="ChildWindowControlTemplate1" TargetType="{x:Type extToolkit:ChildWindow}">
<Grid x:Name="Root">
<Grid.Resources>
<Style x:Key="FocusVisualStyle" TargetType="{x:Type Control}">
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Margin" Value="-1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Fill="{TemplateBinding Background}" Margin="{TemplateBinding Margin}" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="0.5" StrokeDashArray="4 3">
<Rectangle.RenderTransform>
<TranslateTransform X="{Binding Left}" Y="{Binding Top}"/>
</Rectangle.RenderTransform>
</Rectangle>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Grid.Resources>
<Grid x:Name="PART_WindowRoot" HorizontalAlignment="Left" Height="{TemplateBinding Height}" MinWidth="{TemplateBinding MinWidth}" MinHeight="{TemplateBinding MinHeight}" VerticalAlignment="Top" Width="{TemplateBinding Width}">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Grid.RenderTransform>
<Grid x:Name="WindowGrid">
<Border BorderBrush="{TemplateBinding WindowBorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5,5,0,0" Opacity="{TemplateBinding WindowOpacity}"/>
<Grid Background="{x:Null}" Margin="0">
<Border x:Name="WindowBorder" Background="{TemplateBinding WindowBackground}" CornerRadius="4,4,0,0" Margin="1" Opacity="{TemplateBinding WindowOpacity}"/>
<Border BorderBrush="White" BorderThickness="1" CornerRadius="4,4,0,0" Margin="1" Opacity="0.7"/>
</Grid>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="26"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid x:Name="ContentGrid" Margin="6,0,6,6" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Border BorderBrush="White" BorderThickness="1" CornerRadius="1"/>
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="0.1" Margin="1">
<ContentPresenter x:Name="Content" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}"/>
</Border>
</Grid>
<Border x:Name="PART_DragWidget" Background="Transparent" Grid.Column="1" CornerRadius="5,5,0,0" Margin="1,1,1,0">
<Grid>
<Grid x:Name="CaptionHeader" Margin="1,1,105,0" VerticalAlignment="Center">
<ContentControl x:Name="Caption" Content="{TemplateBinding Caption}" Foreground="{TemplateBinding CaptionForeground}" HorizontalAlignment="Stretch" IsTabStop="False" Margin="5,0,0,0"/>
</Grid>
</Grid>
</Border>
</Grid>
<Border BorderBrush="#A5FFFFFF" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3" HorizontalAlignment="Right" Margin="0,1,7,0" VerticalAlignment="Top">
<Button x:Name="PART_CloseButton" Height="17" IsTabStop="False" Style="{TemplateBinding CloseButtonStyle}" Visibility="{TemplateBinding CloseButtonVisibility}" Width="43">
<Path Data="M0.5,0.5L4.5178828,0.5 6.0620003,3.125 7.4936447,0.5 11.5,0.5 11.5,1.5476431 8.7425003,6.1201854 11.5,10.359666 11.5,11.5 7.4941902,11.5 6.0620003,8.8740005 4.5172949,11.5 0.5,11.5 0.5,10.43379 3.3059995,6.1201582 0.5,1.4676378 0.5,0.5z" Fill="#E4FFFFFF" HorizontalAlignment="Center" Height="10" Stretch="Fill" Stroke="#FF535666" VerticalAlignment="Center" Width="12"/>
</Button>
</Border>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="WindowState" Value="Closed">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
关于c# - 使用 WPF 获取工具包样式窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194366/