- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个模态对话框,我正在使用 WPF 扩展工具包的 ChildWindow
显示,但我不喜欢窗口的默认外观,因为它不正确支持系统颜色(它有一个强制白色背景)并且在使用时不适应 Windows Classic Shell。 因此,我试图为 ChildWindow
创建我自己的样式,但在这样做时我已经破坏了控件的对话框行为 - 我将如何设置它的样式以恢复此行为?
我的对话框样式如下。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfToolkit="http://schemas.xceed.com/wpf/xaml/toolkit">
<Style TargetType="wpfToolkit:ChildWindow">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="wpfToolkit:ChildWindow">
<!--<Window WindowState="{TemplateBinding WindowState}" Visibility="{TemplateBinding Visibility}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}">-->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Grid.RowSpan="2"
BorderThickness="2"
BorderBrush="Gold"/>
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStop Color="Lime"/>
<GradientStop Color="DarkGreen"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<TextBlock Foreground="White" Text="{TemplateBinding Caption}"/>
<ContentPresenter Grid.Row="1"/>
</Grid>
<!--</Window>-->
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
我曾尝试将它嵌套在一个窗口中以恢复对话框行为,但我却收到运行时异常“窗口必须是树的根。无法将窗口添加为 Visual 的子项。”。我的风格需要什么?
最佳答案
从默认样式开始,然后根据您的需要对其进行自定义:
XAML:
<Window x:Class="WpfApp27.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:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:local="clr-namespace:WpfApp27"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="300">
<Window.Resources>
<LinearGradientBrush x:Key="LinearGradientBrushStyle1" StartPoint="0,0" EndPoint="1,1">
<LinearGradientBrush.GradientStops>
<GradientStop Color="Lime"/>
<GradientStop Color="DarkGreen" Offset="0.5"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<Style x:Key="ChildWindowStyle1" TargetType="{x:Type xctk:ChildWindow}">
<Setter Property="Background" Value="Navy"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="WindowBackground" Value="{StaticResource LinearGradientBrushStyle1}"/>
<Setter Property="MinWidth" Value="120"/>
<Setter Property="MinHeight" Value="45"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type xctk:ChildWindow}">
<Grid x:Name="PART_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}">
<xctk:WindowControl x:Name="PART_WindowControl" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CloseButtonVisibility="{TemplateBinding CloseButtonVisibility}" CaptionForeground="{TemplateBinding CaptionForeground}" ContentTemplate="{TemplateBinding ContentTemplate}" CaptionFontSize="{TemplateBinding CaptionFontSize}" Caption="{TemplateBinding Caption}" Content="{TemplateBinding Content}" CaptionShadowBrush="{TemplateBinding CaptionShadowBrush}" CloseButtonStyle="{TemplateBinding CloseButtonStyle}" CaptionIcon="{TemplateBinding CaptionIcon}" Height="{TemplateBinding Height}" IsActive="{TemplateBinding IsActive}" WindowStyle="{TemplateBinding WindowStyle}" WindowBackground="{TemplateBinding WindowBackground}" WindowOpacity="{TemplateBinding WindowOpacity}" WindowInactiveBackground="{TemplateBinding WindowInactiveBackground}" WindowBorderBrush="{TemplateBinding WindowBorderBrush}" Width="{TemplateBinding Width}" WindowBorderThickness="{TemplateBinding WindowBorderThickness}"/>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="WindowState" Value="Closed">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.BasedOn>
<Style TargetType="{x:Type xctk:WindowControl}">
<Setter Property="CloseButtonStyle">
<Setter.Value>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Blue"/>
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" BorderThickness="0" Background="{TemplateBinding Background}" Padding="1">
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsActive, RelativeSource={RelativeSource TemplatedParent}}" Value="False">
<Setter Property="Background" Value="#FFBCBCBC"/>
</DataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="SkyBlue"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="#FF993D3D"/>
</Trigger>
</Style.Triggers>
</Style>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Background" Value="White"/>
<Setter Property="CaptionFontSize" Value="15"/>
<Setter Property="CaptionForeground" Value="white"/>
<Setter Property="CaptionShadowBrush" Value="Transparent"/>
<Setter Property="WindowBorderBrush" Value="Gold"/>
<Setter Property="WindowBackground" Value="#FF0078D7"/>
<Setter Property="WindowBorderThickness" Value="5"/>
<Setter Property="WindowInactiveBackground" Value="#FFEBEBEB"/>
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="KeyboardNavigation.TabNavigation" Value="None"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate/>
</Setter.Value>
</Setter>
</Style>
</Style.BasedOn>
</Style>
</Window.Resources>
<Grid>
<xctk:WindowContainer Grid.Row="0">
<xctk:ChildWindow Grid.Row="0" Width="200" Height="150" Caption="Child Window" IsModal="True" WindowState="Open" Style="{DynamicResource ChildWindowStyle1}">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock>My Child Window</TextBlock>
<Button Width="75" Height="25">CHILD</Button>
</StackPanel>
</xctk:ChildWindow>
</xctk:WindowContainer>
</Grid>
关于c# - 重新设计 WPF 扩展工具包的 ChildWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44851453/
有谁知道如何使用 ChildWindow 解决 SL3 中的内存泄漏? 引用下面的代码片段: private void Button_Click(object sender, RoutedEvent
我不确定我所经历的与这里是否相同:Silverlight ChildWindow Memory Leak 但...: 我在同一个组中有3个单选按钮的Silverlight ChildWindow,并且
我有这个问题:我有一个特定应用程序的主窗口的处理程序,我想在该应用程序上模拟按键... 我正在使用 sendMessage/postMessage api 调用来执行此操作。我不使用 .Net Sen
我想将 pressKey 事件发送到某个应用程序,该应用程序不是 Windows 中的事件应用程序,因此我必须使用 sendMessage/postMessage api 调用。 但是,我需要知道在应
从我发现的一个 Silverlight 论坛页面,我的印象是在后面的代码中创建的 ChildWindow 会选择页面其余部分的主题;只有当您从 ChildWindow 继承时,情况才不再如此。 出于某
ChildWindow 是一个模态窗口,但它不会阻塞。有没有办法让它阻塞?我基本上想要一个 ShowDialog() 方法,该方法将调用 ChildWindow.Show() 但在用户关闭 Child
我在设计 Silverlight ChildWindow 时遇到了一个有趣的问题。我在窗口标题上定义了一个按钮,如下所示:
我有一个简单的 ChildWindow,它只包含两个元素,文本 block 和一个用于模拟等待屏幕的进度条。该 ChildWindow 在调用异步 WCF 方法之前启动并在回调时关闭。 问题是 Chi
有没有办法在silverlight 3中创建一个可调整大小的子窗口?任何指针都受到高度赞赏。 最佳答案 我没有任何实际代码供您使用,但您可能希望子类化 ChildWindow 并在 ChildWind
我想在子窗口关闭时运行一个函数,但它无法检查window.close。 这是我的代码: function openChild(){
我有一个模态对话框,我正在使用 WPF 扩展工具包的 ChildWindow 显示,但我不喜欢窗口的默认外观,因为它不正确支持系统颜色(它有一个强制白色背景)并且在使用时不适应 Windows Cla
这是我的 ChildWindow xaml 代码: 1 2 3 4 5 6 7 8 9
我正在尝试将 ChildWindow Height 属性绑定(bind)到我的 viewmodel 属性,但我认为它只在第一次加载时读取 VM 值,并且在 VM 更改时不会更改大小并通知更改。在调试器
我试图将我的子窗口设置为我的应用程序的大小,以便它占据整个屏幕。我正在使用以下代码: Binding widthBinding = new Binding("Width"); widthBinding
如何让子窗口访问和/或修改其主窗口的属性? 我有一个主窗口,它根据主窗口上按下的按钮打开不同的子窗口。 我希望任何子窗口都能够修改主窗口的某些属性,但我无法找到访问它们的好方法。 最佳答案 定义您的小
我的 ChildWindow 已将 CloseButton 和处理程序分配给 Click 事件。代码(仅举例): 声明关闭按钮: 专用计数器(用于诊断问题): private uint _i; 关闭
是否可以在 Silverlight 中制作像 ChildWindow 这样的 ChildWindow,但对于 WPF?我试图使 Silverlight ChildWindow 适应 WPF,但遇到了转
我是 MVVM 的新手并试图弄清楚如何 关闭子窗口 使用传统的取消按钮 MVVM 轻型工具包 . 在我的 ChildWindow (StoreDetail.xaml) 中,我有: 在我的 ViewM
Win1.js var Appwin = Titanium.UI.createWindow(); function checkPage() { } Appwin.open
我想删除 Silverlight 3 中新弹出控件的灰色标题。 如果可能的话,有什么想法吗? 最佳答案 很简单,只需编辑默认的 ChildWindow 样式即可。 在 Blend 3 中创建一个 Ch
我是一名优秀的程序员,十分优秀!