深巷旧酒 2023-05-22 13:00 采纳率: 0%
浏览 23

avalonia ui 自定义属性验证

img


我想回调里面拿到图片路径,然后拼接成另一个图片路径,我这里该怎么办?有点不理解这个验证回调。如果换成string类型,image控件绑定的时候不现实图片。

  • 写回答

2条回答 默认 最新

  • 北海屿鹿 2023-05-23 15:05
    关注

    在Avalonia UI中,自定义属性验证可以使用ValidationErrors类来实现。当控件的值发生变化时,可以在ValidationErrors类的回调函数中进行验证,并返回一个包含错误信息的列表。如果验证通过,则返回一个空列表。
    可以在ValidationErrors类的回调函数中获取图片路径,并拼接成另一个图片路径

    public class MyViewModel : ViewModelBase, IDataErrorInfo
    {
        private string _imagePath;
    
        public string ImagePath
        {
            get { return _imagePath; }
            set
            {
                _imagePath = value;
                RaisePropertyChanged(nameof(ImagePath));
            }
        }
    
        public string this[string columnName]
        {
            get
            {
                switch (columnName)
                {
                    case nameof(ImagePath):
                        var errors = new List<string>();
                        if (string.IsNullOrEmpty(ImagePath))
                        {
                            errors.Add("Image path is required.");
                        }
                        else
                        {
                            // 拼接另一个图片路径
                            var anotherImagePath = ImagePath + "_another";
                            // 验证图片路径是否存在
                            if (!File.Exists(anotherImagePath))
                            {
                                errors.Add("Another image path does not exist.");
                            }
                        }
                        return string.Join(Environment.NewLine, errors);
                    default:
                        return string.Empty;
                }
            }
        }
    
        public string Error => string.Empty;
    }
    
    
    

    ImagePath属性绑定到了一个图片控件上,当图片路径发生变化时,会触发ValidationErrors类的回调函数。在回调函数中,首先将图片路径拼接成另一个图片路径,然后验证另一个图片路径是否存在,如果不存在,则返回一个包含错误信息的列表

    评论

报告相同问题?

问题事件

  • 创建了问题 5月22日

悬赏问题

  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制