当前位置:   article > 正文

WPF 组合单选 样式 RadioButton Style_wpf radiobutton style

wpf radiobutton style

本来想写个方便的控件  ,但是真正写起来内容太多了,所以还是分三个样式来解决

等到后面有什么组合的方法 再看

使用自定义控件包裹的话 遇到问题是  Trigger 里面不能动态绑定值

效果如下

  1. <Grid Height="27" Margin="20,42,20,0" VerticalAlignment="Top">
  2. <Grid.ColumnDefinitions>
  3. <ColumnDefinition />
  4. <ColumnDefinition />
  5. </Grid.ColumnDefinitions>
  6. <RadioButton x:Name="costServer_A" Content="免费服务" IsChecked="True" Click="ChangeCost_Click" Style="{StaticResource GroupSelectRadioButton_Left}" Margin="0" />
  7. <RadioButton x:Name="costServer_B" Content="有偿服务" Click="ChangeCost_Click" Style="{StaticResource GroupSelectRadioButton_Right}" Margin="0" Grid.Column="1" />
  8. </Grid>
  1. <!--选择框-->
  2. <Style x:Key="GroupSelectRadioButton_Left" TargetType="{x:Type RadioButton}">
  3. <Setter Property="Background" Value="Transparent"/>
  4. <Setter Property="BorderBrush" Value="Transparent"/>
  5. <Setter Property="Foreground" Value="Gray"></Setter>
  6. <Setter Property="Padding" Value="0"></Setter>
  7. <Setter Property="FontSize" Value="12"></Setter>
  8. <Setter Property="BorderThickness" Value="0"></Setter>
  9. <Setter Property="Height" Value="auto"></Setter>
  10. <Setter Property="SnapsToDevicePixels" Value="true"></Setter>
  11. <Setter Property="Template">
  12. <Setter.Value>
  13. <ControlTemplate TargetType="{x:Type RadioButton}">
  14. <Grid x:Name="grid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ClipToBounds="True" >
  15. <Rectangle x:Name="ButtonStock" Fill="{TemplateBinding Background}" Stroke="Gray" RadiusX="5" RadiusY="5" Margin="0,0,-5,0" StrokeThickness="1"/>
  16. <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
  17. </Grid>
  18. <!--触发器:设置选中状态符号-->
  19. <ControlTemplate.Triggers>
  20. <Trigger Property="IsChecked" Value="true">
  21. <!--<Setter Property="BorderThickness" Value="0"/>-->
  22. <!--<Setter Property="BorderBrush" Value="#FF37A22D"/>-->
  23. <Setter Property="Background" Value="Gray"></Setter>
  24. <Setter Property="Foreground" Value="White"></Setter>
  25. </Trigger>
  26. <Trigger Property="IsMouseOver" Value="true">
  27. <Setter Property="Opacity" Value="0.6"></Setter>
  28. </Trigger>
  29. <Trigger Property="IsEnabled" Value="False">
  30. <Setter Property="Opacity" Value="0.5" TargetName="grid" ></Setter>
  31. </Trigger>
  32. </ControlTemplate.Triggers>
  33. </ControlTemplate>
  34. </Setter.Value>
  35. </Setter>
  36. </Style>
  37. <Style x:Key="GroupSelectRadioButton_Middle" TargetType="{x:Type RadioButton}">
  38. <Setter Property="Background" Value="Transparent"/>
  39. <Setter Property="BorderBrush" Value="Transparent"/>
  40. <Setter Property="Foreground" Value="Gray"></Setter>
  41. <Setter Property="Padding" Value="0"></Setter>
  42. <Setter Property="FontSize" Value="12"></Setter>
  43. <Setter Property="BorderThickness" Value="0"></Setter>
  44. <Setter Property="Height" Value="auto"></Setter>
  45. <Setter Property="SnapsToDevicePixels" Value="true"></Setter>
  46. <Setter Property="Template">
  47. <Setter.Value>
  48. <ControlTemplate TargetType="{x:Type RadioButton}">
  49. <Grid x:Name="grid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ClipToBounds="True" >
  50. <Rectangle x:Name="ButtonStock" Fill="{TemplateBinding Background}" Stroke="Gray" RadiusX="0" RadiusY="0" Margin="0,0,0,0" StrokeThickness="1"/>
  51. <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
  52. </Grid>
  53. <!--触发器:设置选中状态符号-->
  54. <ControlTemplate.Triggers>
  55. <Trigger Property="IsChecked" Value="true">
  56. <!--<Setter Property="BorderThickness" Value="0"/>-->
  57. <!--<Setter Property="BorderBrush" Value="#FF37A22D"/>-->
  58. <Setter Property="Background" Value="Gray"></Setter>
  59. <Setter Property="Foreground" Value="White"></Setter>
  60. </Trigger>
  61. <Trigger Property="IsMouseOver" Value="true">
  62. <Setter Property="Opacity" Value="0.6"></Setter>
  63. </Trigger>
  64. <Trigger Property="IsEnabled" Value="False">
  65. <Setter Property="Opacity" Value="0.5" TargetName="grid" ></Setter>
  66. </Trigger>
  67. </ControlTemplate.Triggers>
  68. </ControlTemplate>
  69. </Setter.Value>
  70. </Setter>
  71. </Style>
  72. <Style x:Key="GroupSelectRadioButton_Right" TargetType="{x:Type RadioButton}">
  73. <Setter Property="Background" Value="Transparent"/>
  74. <Setter Property="BorderBrush" Value="Transparent"/>
  75. <Setter Property="Foreground" Value="Gray"></Setter>
  76. <Setter Property="Padding" Value="0"></Setter>
  77. <Setter Property="FontSize" Value="12"></Setter>
  78. <Setter Property="BorderThickness" Value="0"></Setter>
  79. <Setter Property="Height" Value="auto"></Setter>
  80. <Setter Property="SnapsToDevicePixels" Value="true"></Setter>
  81. <Setter Property="Template">
  82. <Setter.Value>
  83. <ControlTemplate TargetType="{x:Type RadioButton}">
  84. <Grid x:Name="grid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ClipToBounds="True" >
  85. <Rectangle x:Name="ButtonStock" Fill="{TemplateBinding Background}" Stroke="Gray" RadiusX="5" RadiusY="5" Margin="-5,0,0,0" StrokeThickness="1"/>
  86. <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
  87. </Grid>
  88. <!--触发器:设置选中状态符号-->
  89. <ControlTemplate.Triggers>
  90. <Trigger Property="IsChecked" Value="true">
  91. <!--<Setter Property="BorderThickness" Value="0"/>-->
  92. <!--<Setter Property="BorderBrush" Value="#FF37A22D"/>-->
  93. <Setter Property="Background" Value="Gray"></Setter>
  94. <Setter Property="Foreground" Value="White"></Setter>
  95. </Trigger>
  96. <Trigger Property="IsMouseOver" Value="true">
  97. <Setter Property="Opacity" Value="0.6"></Setter>
  98. </Trigger>
  99. <Trigger Property="IsEnabled" Value="False">
  100. <Setter Property="Opacity" Value="0.5" TargetName="grid" ></Setter>
  101. </Trigger>
  102. </ControlTemplate.Triggers>
  103. </ControlTemplate>
  104. </Setter.Value>
  105. </Setter>
  106. </Style>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/733643
推荐阅读
相关标签
  

闽ICP备14008679号