Wpf 更改复选框的大小及其复选标记
我的应用程序将在带有触摸屏的电脑上运行,由警察在开车时操作。我把所有的图形元素都放大了,这样他们就可以被像我一样拥有香肠手指的人操作了 我有一个Wpf 更改复选框的大小及其复选标记,wpf,templates,checkbox,Wpf,Templates,Checkbox,我的应用程序将在带有触摸屏的电脑上运行,由警察在开车时操作。我把所有的图形元素都放大了,这样他们就可以被像我一样拥有香肠手指的人操作了 我有一个复选框,需要显示在屏幕上。我需要缩放复选框的大小,并将复选标记放大。我尝试在Expression Blend中编辑复选框的模板,方法是右键单击并选择Edit template | Edit a Copy。我设置了副本,使其适用于所有复选框 我可以通过模板将框的高度和宽度属性绑定到控件的实际高度,使框变大。但是,复选标记并没有因此而增长,而是位于左上角。至
复选框
,需要显示在屏幕上。我需要缩放复选框的大小,并将复选标记放大。我尝试在Expression Blend中编辑复选框的模板,方法是右键单击并选择Edit template | Edit a Copy。我设置了副本,使其适用于所有复选框
我可以通过模板将框的高度和宽度属性绑定到控件的实际高度
,使框变大。但是,复选标记并没有因此而增长,而是位于左上角。至少可以说,这看起来不对
编辑模板时,我得到的Xaml如下:
<Style TargetType="{x:Type CheckBox}">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Background" Value="{StaticResource CheckBoxFillNormal}"/>
<Setter Property="BorderBrush" Value="{StaticResource CheckBoxStroke}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FocusVisualStyle" Value="{StaticResource EmptyCheckBoxFocusVisual}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<BulletDecorator Background="Transparent" SnapsToDevicePixels="true">
<BulletDecorator.Bullet>
<Microsoft_Windows_Themes:BulletChrome BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" IsChecked="{TemplateBinding IsChecked}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="{TemplateBinding ActualHeight}" Height="{TemplateBinding ActualHeight}"/>
</BulletDecorator.Bullet>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</BulletDecorator>
<ControlTemplate.Triggers>
<Trigger Property="HasContent" Value="true">
<Setter Property="FocusVisualStyle" Value="{StaticResource CheckRadioFocusVisual}"/>
<Setter Property="Padding" Value="4,0,0,0"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Expression Blend不允许我编辑BulletChrome的
模板。“编辑当前”和“编辑副本”选项被禁用
我如何完成我想做的事情
Tony您要查找的是路径,它实际上是复选标记,需要对其进行编辑。如果您查看了WPF中有关自定义复选框工作的部分,它将向您展示如何非常简单地完成它。如果你想再举一个例子,我可以在今天晚些时候下班后很快把它踢出去。干杯 可以找到默认的XAML,即
BulletDecorator的虚构示例。该页面上几乎整个XAML都处理BulletDecorator
的外观和行为
所有XAML的核心是两个Path
对象。第一个用于复选标记,第二个用于不确定标记(尽管名称“InderminateMark”在示例XAML中拼写错误。幸运的是,在复选框示例中,它的拼写始终错误,因此没有问题
<Path Visibility="Collapsed"
Width="7"
Height="7"
x:Name="CheckMark"
SnapsToDevicePixels="False"
StrokeThickness="2"
Data="M 0 0 L 7 7 M 0 7 L 7 0">
<Path.Stroke>
<SolidColorBrush Color="{DynamicResource GlyphColor}" />
</Path.Stroke>
</Path>
<Path Visibility="Collapsed"
Width="7"
Height="7"
x:Name="InderminateMark"
SnapsToDevicePixels="False"
StrokeThickness="2"
Data="M 0 7 L 7 0">
<Path.Stroke>
<SolidColorBrush Color="{DynamicResource GlyphColor}" />
</Path.Stroke>
</Path>
正如H.B.在评论中指出的那样,默认的WPF主题可以找到不完美,但它可以工作。您可以设置文本块的样式(例如FontSize、Height…),复选标记会随着文本块的增加而增加
<StackPanel Name="CheckBoxPanel" Orientation="Horizontal">
<Viewbox Height="{Binding Path=ActualHeight, ElementName=CheckBoxPanel}">
<CheckBox />
</Viewbox>
<TextBlock /> <!-- for CheckBox Content -->
</StackPanel>
如果更改大小,则还必须更改路径,路径将固定为大小。如果已经有路径并且只想缩放它,则可以按比例增加所有数值
我最近需要将MSDN的示例自定义复选框[x]样式更改为勾号(),这里的路径是前后
<Path Visibility="Collapsed"
Width="7"
Height="7"
x:Name="CheckMark"
SnapsToDevicePixels="False"
StrokeThickness="2"
Data="M 0 0 L 7 7 M 0 7 L 7 0">
<Path.Stroke>
<SolidColorBrush Color="{DynamicResource GlyphColor}" />
</Path.Stroke>
</Path>
这两个示例都有一条带有两条线的路径,这两条线的起点和终点位置都使用XY坐标。请注意,在第一张图像中,数字范围为0到7,大小为7x7。另外请注意,在第二张图像(勾号)中,我将大小增加到了9x9
我所做的就是调整每条线的起始和结束矢量2位置的数字,以得到记号形状
手动编辑的替代方法是下载免费版本的“Microsoft Expression Design 4”。然后,您可以按所需大小制作新图像,然后使用导出功能并选择XAML文件格式,然后检查生成的文件并从中获取路径。MSDN上的这些页面不提供默认模板,但提供了生成的示例英译汉@H.B.谢谢,我不知道这些示例不是默认示例。这可以解释我与他们之间的一些不一致之处。在与我的老板讨论之后,我将进一步进行定制。他希望复选框看起来更像单选按钮,而不是圆形。他想要一个填充的边框颜色深沉,大小适中,易于查看。事实上,在驾驶过程中,复选标记很容易漏掉。使其突出很重要。使用查看框比批准的答案要好得多。
<Path Visibility="Collapsed"
Width="9"
Height="9"
x:Name="CheckMark"
SnapsToDevicePixels="False"
StrokeThickness="2"
Data="M 1 4.5 L 4 7.5 M 4 7.5 L 8 1">
<Path.Stroke>
<SolidColorBrush Color="{DynamicResource GlyphColor}" />
</Path.Stroke>
</Path>