Ton*_*ile 7 wpf checkbox templates
我的应用程序将在具有触摸风格的计算机上运行,由驾驶员在驾驶时操作.我将所有的图形元素都做得更大,这样它们就可以被像我自己和更大的香肠手指一样的人操作.
我有一个需要出现在屏幕上的CheckBox.我需要缩放复选框的大小和复选标记.我尝试通过右键单击并选择Edit Tempate |来编辑Expression Blend中Checkbox的模板 编辑副本.我设置了副本,因此它适用于所有复选框.
我能够通过模板将它的高度和宽度属性绑定到控件的ActualHeight来使框更大.但是,复选标记没有因此而增长,位于左上角.至少可以说它看起来不对.
当我编辑模板时,这是我回来的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>
Run Code Online (Sandbox Code Playgroud)
Expression Blend不会让我生效BulletChrome的模板."编辑当前"和"编辑副本"选项已禁用.
我如何完成我想做的事情?
托尼
可以在MSDN上找到默认的XAML作为a的组成示例.该页面上的几乎所有XAML都处理了该页面的外观和行为.BulletDecoratorBulletDecorator
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>
Run Code Online (Sandbox Code Playgroud)
正如HB在评论中指出的那样,可以在这里找到默认的WPF主题.
不完美,但它有效。您设置 TextBlock 的样式(例如 FontSize、Height ...),并且复选标记随 TextBlock 一起增长。
<StackPanel Name="CheckBoxPanel" Orientation="Horizontal">
<Viewbox Height="{Binding Path=ActualHeight, ElementName=CheckBoxPanel}">
<CheckBox />
</Viewbox>
<TextBlock /> <!-- for CheckBox Content -->
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14523 次 |
| 最近记录: |