XAML 在MaterialDesign中使用触发器:PackIcon Kind=“Outline”in wpf

idv4meu8  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(236)

我正在使用<MaterialDesign:PackIcon Kind="BugOutline"/>和尝试相同的触发器。动机是更改焦点上的MaterialDesign:PackIcon Kind=“BugOutline”的边框颜色

  1. <Button Margin="10 5" Command={Binding AddBugCommand} ToolTip="Add" Style="{StaticResource MaterialDesignIconButton}">
  2. <Material:PackIcon Kind="BugOutline"/>
  3. </Button>

我做了以下工作:

  1. <MaterialDesign:PackIcon.Style>
  2. <Style TargetType="MaterialDesign:PackIcon">
  3. <Style.Triggers>
  4. <Triggers Property="IsFocused" Value="True">
  5. <Setter Property="BorderBrush" Value=""Yellow"/>
  6. <Setter Propety="BorderThickness" Value="2"/>
  7. </Triggers>
  8. </Style.Trigers>
  9. </Style>
  10. </MaterialDesign:PackIcon.Style>

我还尝试通过扩展已有的按钮样式来为按钮本身创建触发器。但没有成功。

  1. <Button.Style>
  2. <Style TargetType="{x:Type Button}" BasedOn={StaticResource MaterialDesignIconButton}>
  3. <Style.Triggers>
  4. <Trigger Property="IsFocused" Value="True">
  5. <Setter Property="BorderBrush" Value="Yellow"/>
  6. <Setter Property="BorderThickness" Value="2"/>
  7. <Trigger>
  8. </Style.Triggers>
  9. </Style>
  10. </Button.Style>
fcipmucu

fcipmucu1#

下面是一个示例解决方案。

  • I将内容元素(在本例中为PackIcon)与按钮的前景绑定
  • 我创建了一个带有触发器的样式,它可以根据状态(IsMouseOver、IsKeyboardFocusWithin)更改按钮的前景。
  1. <Button VerticalAlignment="Top"
  2. HorizontalAlignment="Left"
  3. Width="50"
  4. Height="50">
  5. <Button.Content>
  6. <Path
  7. Data="F1 M 9.97498,1.22334L 4.6983,9.09834L 4.52164,9.09834L 0,5.19331L 1.27664,3.52165L 4.255,6.08833L 8.33331,1.52588e-005L 9.97498,1.22334 Z "
  8. Fill="{Binding RelativeSource={RelativeSource AncestorType={x:Type Button}} ,Path=Foreground}"
  9. Margin="1"
  10. Opacity="1"
  11. Stretch="Fill" />
  12. </Button.Content>
  13. <Button.Style>
  14. <Style TargetType="{x:Type Button}">
  15. <Setter Property="Foreground"
  16. Value="Red" />
  17. <Style.Triggers>
  18. <Trigger Property="IsMouseOver"
  19. Value="True">
  20. <Setter Property="Foreground"
  21. Value="Yellow" />
  22. </Trigger>
  23. <Trigger Property="IsKeyboardFocusWithin"
  24. Value="True">
  25. <Setter Property="Foreground"
  26. Value="Green" />
  27. </Trigger>
  28. <MultiTrigger>
  29. <MultiTrigger.Conditions>
  30. <Condition Property="IsMouseOver" Value="True"/>
  31. <Condition Property="IsKeyboardFocusWithin" Value="True"/>
  32. </MultiTrigger.Conditions>
  33. <MultiTrigger.Setters>
  34. <Setter Property="Foreground"
  35. Value="Yellow" />
  36. </MultiTrigger.Setters>
  37. </MultiTrigger>
  38. </Style.Triggers>
  39. </Style>
  40. </Button.Style>

如果你想适应我的例子,请不要忘记将BaseOn属性添加到样式中,将Path更改为PackIcon,并在触发时调整必要的画笔。

展开查看全部

相关问题