如何为模板实现类似于Orientation的属性

安德烈·吉斯(Andrzej Gis)

我创建了一个ToggleButton的自定义模板,用于扩展/折叠控件的一部分。

<ControlTemplate x:Key="ShowHideToggleButtonTemplate" TargetType="ToggleButton">
    <ControlTemplate.Resources>
        <system:Double x:Key="DefaultPathThickness">3</system:Double>
        <system:Double x:Key="MouseOverPathThickness">4</system:Double>
        <Geometry x:Key="HidePathData">M 0,0 7,7 0,14</Geometry>
        <Geometry x:Key="ShowPathData">M 7,0 0,7 7,14</Geometry>
    </ControlTemplate.Resources>
    <Border Name="BoundingBorder" CornerRadius="15,0,0,15" Background="{StaticResource DefaultBackgroundBrush}">
        <Border HorizontalAlignment="Center" VerticalAlignment="Center">
            <Path Name="path" Stroke="{StaticResource DefaultTextBrush}" StrokeThickness="{StaticResource DefaultPathThickness}" Data="{StaticResource HidePathData}"/>
        </Border>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsChecked" Value ="True">
            <Setter TargetName="path" Property="Data" Value="{StaticResource HidePathData}"/>
        </Trigger>
        <Trigger Property="IsChecked" Value ="False">
            <Setter TargetName="path" Property="Data" Value="{StaticResource ShowPathData}"/>
        </Trigger>
        <Trigger Property="IsMouseOver" Value ="True">
            <Setter TargetName="path" Property="StrokeThickness" Value="{StaticResource MouseOverPathThickness}"/>
        </Trigger>
        <Trigger Property="IsMouseOver" Value ="False">
            <Setter TargetName="path" Property="StrokeThickness" Value="{StaticResource DefaultPathThickness}"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

在这里,您可以看到它的外观:

我的切换按钮

我想在控件的顶部,底部和右侧也使用它,因此我必须以某种方式旋转它。实际上,我想实现带有4种状态的定向之类的东西。

我的第一次尝试是在模板之外进行操作:

<ToggleButton Grid.Row="5" Grid.Column="0" Template="{StaticResource ShowHideToggleButtonTemplate}" IsChecked="{Binding DropBox.IsShown}"
          Height="50" Width="25" HorizontalAlignment="Center" RenderTransformOrigin="0.5, 0.5">
    <ToggleButton.RenderTransform>
        <TransformGroup>
            <RotateTransform Angle="270"/>
            <TranslateTransform Y="-12.5"/>
        </TransformGroup>
    </ToggleButton.RenderTransform>
</ToggleButton>

旋转后我的ToggleButton

如您所见,按钮的边框仍然是垂直的,在按钮下方留有空白。

要做的事情:

  1. 更新边界矩形以适合实际按钮的矩形
  2. 支持4种状态(左,右,上,下)
  3. 当我使用水平状态之一(顶部或底部)时,“宽度”应变为“高度”,而“高度”应变为“宽度”。
  4. 转换Y不应采用硬编码(取决于按钮的宽度和高度)

你能帮我吗?

TGT

最好使用LayoutTransform而不是RenderTransform,因为LayoutTransform可以更新布局边界。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为C ++函数模板实现简化的界面?

来自分类Dev

如何为值数组实现类似于ISBETWEEN的函数,而不必多次计算数组?

来自分类Dev

如何实现类似于SO的url重写

来自分类Dev

如何实现类似于“truncateat”的东西?

来自分类Dev

如何使用golang的模板实现级联下拉菜单

来自分类Dev

如何使用多个模板实现Django会话向导

来自分类Dev

使用类似于调用模板的方法添加属性以输出XML

来自分类Dev

如何为UITextField实现类似NSLineBreakByTruncatingHead的东西?

来自分类Dev

如何为类似于Pinterest板的图像列表设置样式?

来自分类Dev

如何在Rust中实现类似于@override的行为

来自分类Dev

如何在Apache Flink中实现类似于samza的WindowableTask?

来自分类Dev

如何使用AHK实现类似于Visual Studio的链接热键?

来自分类Dev

如何实现类似于Paragon网站的滚动效果

来自分类Dev

如何在bash中实现类似于'apt search'的搜索

来自分类Dev

实现类似于UICollectionView的“ registerClass”

来自分类Dev

实现类似于UICollectionView的“ registerClass”

来自分类Dev

如何创建类似于 django-shop 中的产品属性

来自分类Dev

使用模板实现的通用类型容器

来自分类Dev

C ++模板实现文件扩展约定?

来自分类Dev

矩阵模板实现的不良方面

来自分类Dev

C ++模板实现循环递归

来自分类Dev

用模板实现派生类

来自分类Dev

模板实现与c中的指针兼容

来自分类Dev

矩阵模板实现的不良方面

来自分类Dev

如何在C ++中使用支持比较器的模板实现容器?

来自分类Dev

如何为聚合属性实现INotifyPropertyChanged

来自分类Dev

类的模板,可通过模板实现接口

来自分类Dev

std :: function类似于委托模板类

来自分类Dev

类似于类型列表(?)的模板类

Related 相关文章

  1. 1

    如何为C ++函数模板实现简化的界面?

  2. 2

    如何为值数组实现类似于ISBETWEEN的函数,而不必多次计算数组?

  3. 3

    如何实现类似于SO的url重写

  4. 4

    如何实现类似于“truncateat”的东西?

  5. 5

    如何使用golang的模板实现级联下拉菜单

  6. 6

    如何使用多个模板实现Django会话向导

  7. 7

    使用类似于调用模板的方法添加属性以输出XML

  8. 8

    如何为UITextField实现类似NSLineBreakByTruncatingHead的东西?

  9. 9

    如何为类似于Pinterest板的图像列表设置样式?

  10. 10

    如何在Rust中实现类似于@override的行为

  11. 11

    如何在Apache Flink中实现类似于samza的WindowableTask?

  12. 12

    如何使用AHK实现类似于Visual Studio的链接热键?

  13. 13

    如何实现类似于Paragon网站的滚动效果

  14. 14

    如何在bash中实现类似于'apt search'的搜索

  15. 15

    实现类似于UICollectionView的“ registerClass”

  16. 16

    实现类似于UICollectionView的“ registerClass”

  17. 17

    如何创建类似于 django-shop 中的产品属性

  18. 18

    使用模板实现的通用类型容器

  19. 19

    C ++模板实现文件扩展约定?

  20. 20

    矩阵模板实现的不良方面

  21. 21

    C ++模板实现循环递归

  22. 22

    用模板实现派生类

  23. 23

    模板实现与c中的指针兼容

  24. 24

    矩阵模板实现的不良方面

  25. 25

    如何在C ++中使用支持比较器的模板实现容器?

  26. 26

    如何为聚合属性实现INotifyPropertyChanged

  27. 27

    类的模板,可通过模板实现接口

  28. 28

    std :: function类似于委托模板类

  29. 29

    类似于类型列表(?)的模板类

热门标签

归档