c# - 使用 WPF 获取工具包样式窗口

标签 c# wpf wpftoolkit

我正在使用 WPF 工具包和 WPF 工具包扩展,并注意到当我通过以下方式显示消息框时:

MessageBox.Show("...");

我得到以下信息...

enter image description here

我想让我的主应用程序窗口也使用这种样式。有办法做到吗?

编辑:我尝试过 WindowStyle="ToolWindow"但它不起作用。

编辑:针对以下答案,请参见下图:

enter image description here

此外,我希望它有一个最大化和最小化按钮,但与关闭按钮具有相同的样式。

谢谢!

最佳答案

你的问题很模糊。您没有在任何地方说出您想要 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/

相关文章:

c# - 尝试从字符串创建 Material - 这不再受支持

wpf - Material 设计 - Wpf - 文本框 - 更改颜色

wpf - 将组合框选定的值绑定(bind)到属性

c# - 如何生成随机值以在 wpf 中绘制条形图?

Javascript if 语句失败

c# - 使用 VS2010 和 Excel 2010 访问 FormatCondition 的异常

WPF FrameworkPropertyMetaData Journal——这有什么意义?

c# - WPF 工具包图表 : how to remove line series data points and still get different line series colors?

c# - 在STA线程上显示忙碌指示器

c# - 将用户输入返回到未定义的数组中?