gpt4 book ai didi

c# - UriTypeConverter 无法从 (null) 转换

转载 作者:行者123 更新时间:2023-12-03 10:38:02 24 4
gpt4 key购买 nike

我遇到了以下 NotSupportedException:

UriTypeConverter 无法从 (null) 转换。

这是发生错误的初始代码:

SlideViewModel s = new SlideViewModel() { Duration = 8 };
_slideList.Add(s);
SlideView = CollectionViewSource.GetDefaultView(_slideList);
SelectedSlide = s; //This is where it crashes

_slideList 是 SlideViewModels 的 ObservableCollection。 SelectedSlide 是一个 SlideViewModel。

进入 SelectedSlide 属性的 setter ,代码是:
set
{
if (_selectedSlide != value)
{
_selectedSlide = value;
RaisePropertyChanged("SelectedSlide");
}
}

进一步了解 RaisePropertyChanged 函数:
protected void RaisePropertyChanged(String propertyName)
{
VerifyPropertyName(propertyName);
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

然后 OnPropertyChanged:
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
var handler = this.PropertyChanged;
if (handler != null)
{
handler(this, e); //Crashes here!
}
}

不知道发生了什么。没有内在的异常(exception)。

最佳答案

你在省略你XAML绑定(bind)代码,但是从错误的类型来看,UriTypeConverter cannot convert from (null).这是一种可能性。
如果我理解正确,SlideViewModel是 SlideViewModel 的类型,在某处,您在 XAML 中绑定(bind)至SlideViewModel .

//像这样的东西?

SlideViewModel 上的一些属性(property)可能是一个字符串。
Uri 需要一种类型的 Uri。
如果正确,您需要创建一个将 Uri 转换为 String 的转换器
在绑定(bind)中使用它,例如:

<SomeElement Uri="{Binding SlideViewModel.SomeProperty,
Converter={StaticResource MyUriToStringConverter}",.../>

如果您正在使用转换器,请确保它处理空值。
同样,如果没有 xaml 或您的目标绑定(bind),真的很难看出谁在响应 SlideViewModel的 PropertyChanged 事件。

关于c# - UriTypeConverter 无法从 (null) 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17305697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com