如何处理空白字符串和无效Uri';s位于绑定到uri属性的文本框中

本文关键字:绑定 于绑定 uri 文本 属性 空白 处理 何处理 字符串 Uri 无效 | 更新日期: 2023-09-27 18:29:09

在我的WPF应用程序中,我有一个绑定到Uri属性的文本框。

<TextBox Grid.Column="1" Grid.Row="10" Margin="0,0,4,4" x:Name="txtExportURL" Text="{Binding Path=ProjectExportURL, Mode=TwoWay}"
                             Visibility="{Binding Permissions.CanExportJson, Source={x:Static services:ApplicationUserInfo.Instance}, Converter={StaticResource BoolToVisibilityConverter}}"/>

我正在尝试对来自文本框的字符串进行验证,如下所示

private Uri _projectExportURL;
 public Uri ProjectExportURL
 {
   get { return _projectExportURL; }
   set
   {
      if(Uri.TryCreate(value, value.AbsoluteUri, out _projectExportURL))
         _projectExportURL = value;
      else
         _projectExportURL = null;
      this.OnPropertyChanged("ProjectExportURL");
    }
}

问题是,当字符串为空或Uri无效并且为TryCreate时,它不会失败并转到else语句。它只是失败了,什么也没做。

如何确保将空字符串和无效Uri设置为null?

如何处理空白字符串和无效Uri';s位于绑定到uri属性的文本框中

你是这个意思吗?

if(value == null || string.IsNullOrEmpty(value.ToString()) || !Uri.TryCreate(value, value.AbsoluteUri, out _projectExportURL))
    _projectExportURL = null;
OnPropertyChanged("ProjectExportURL");

不确定空白Uri是什么。