• Avalonia常用小控件Slider


    1.项目下载地址:https://gitee.com/confusedkitten/avalonia-demo
    2.UI库Semi.Avalonia,项目地址  https://github.com/irihitech/Semi.Avalonia\

    样式预览:

    axaml代码 : 

    1. <UserControl xmlns="https://github.com/avaloniaui"
    2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    3. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    5. xmlns:vm="using:AvaloniaDemo.ViewModels"
    6. mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
    7. x:Class="AvaloniaDemo.Pages.Slider"
    8. x:DataType="vm:SliderViewModel">
    9. <Grid VerticalAlignment="Center" Background="Transparent">
    10. <StackPanel>
    11. <Slider TickFrequency="1" Background="LightGray" Height="40" Minimum="0" Maximum="100" Value="0" Margin="0 3 0 0"
    12. x:Name="SliderProgress" ValueChanged="SliderValueChanged"
    13. PointerPressed="SliderPreviewMouseDown"
    14. PointerReleased="SliderPreviewMouseUp"
    15. PointerMoved="SliderProgress_MouseMove"
    16. PointerCaptureLost="SliderProgress_LostMouseCapture"
    17. ToolTip.Placement="Bottom"
    18. ToolTip.VerticalOffset="{Binding VerticalOffset}"
    19. ToolTip.HorizontalOffset="{Binding HorizontalOffset}">
    20. <ToolTip.Tip>
    21. <ToolTip>
    22. <TextBlock Text="{Binding ToolTip}" Foreground="Black"></TextBlock>
    23. </ToolTip>
    24. </ToolTip.Tip>
    25. </Slider>
    26. </StackPanel>
    27. </Grid>
    28. </UserControl>

     后台代码:

    1. using Avalonia;
    2. using Avalonia.Controls;
    3. using Avalonia.Controls.Primitives;
    4. using Avalonia.Input;
    5. using Avalonia.Markup.Xaml;
    6. using AvaloniaDemo.ViewModels;
    7. using System.Threading;
    8. namespace AvaloniaDemo.Pages;
    9. public partial class Slider : UserControl
    10. {
    11. public SliderViewModel repeatModel = new SliderViewModel();
    12. public Slider()
    13. {
    14. InitializeComponent();
    15. this.DataContext = repeatModel;
    16. }
    17. /// <summary>
    18. /// 进度条的值发生改变触发事件
    19. /// </summary>
    20. /// <param name="sender"></param>
    21. /// <param name="e"></param>
    22. private void SliderValueChanged(object sender, RangeBaseValueChangedEventArgs e)
    23. {
    24. }
    25. /// <summary>
    26. /// 鼠标开始拖拽进度条
    27. /// </summary>
    28. /// <param name="sender"></param>
    29. /// <param name="e"></param>
    30. private void SliderPreviewMouseDown(object sender, PointerPressedEventArgs e)
    31. {
    32. }
    33. /// <summary>
    34. /// 鼠标结束拖拽进度条
    35. /// </summary>
    36. /// <param name="sender"></param>
    37. /// <param name="e"></param>
    38. private void SliderPreviewMouseUp(object sender, PointerReleasedEventArgs e)
    39. {
    40. }
    41. /// <summary>
    42. /// 提示
    43. /// </summary>
    44. /// <param name="sender"></param>
    45. /// <param name="e"></param>
    46. private void SliderProgress_MouseMove(object sender, PointerEventArgs e)
    47. {
    48. repeatModel.ToolTip = SliderProgress.Value.ToString("F2");
    49. var position = e.GetPosition(SliderProgress);
    50. repeatModel.VerticalOffset = position.Y - 80;
    51. repeatModel.HorizontalOffset = position.X - 600;
    52. }
    53. private void SliderProgress_LostMouseCapture(object sender, PointerCaptureLostEventArgs e)
    54. {
    55. }
    56. }

  • 相关阅读:
    Pandas光速入门-一文掌握数据操作
    BMS系统项目
    [ACTF2020 新生赛]Exec
    Maven Dependency 机制
    学习记录: requests 不同请求方式传参和常用的方法
    java获取中文拼音
    淘宝/天猫电商平台获取商品数据按关键字搜索淘宝商品|优惠价|销量|价格|商品推荐案例
    springmvc:设置后端响应给前端的json数据转换成String格式
    如何备考PMP才能一次通过?
    免费下载 | ContextCapture分块OBJ模型合并与裁剪
  • 原文地址:https://blog.csdn.net/confused_kitten/article/details/133791721