我目前正在使用Prism实现一个Xamarin MVVM应用。我有以下IValueConverter:
public class MyConverter: IValueConverter, INotifyPropertyChanged
{
private readonly IMyInjectedService _myInjectedService;
public UnitVisualizationConverter(IMyInjectedService myInjectedService)
{
_myInjectedService = myInjectedService;
}
private string _myProperty= null;
public event PropertyChangedEventHandler PropertyChanged;
public string MyProperty
{
get => _myProperty;
set
{
_unit = _myProperty;
OnPropertyChanged();
}
}
protected virtual void OnPropertyChanged(string propertyName = null)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
//some code
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// some code
}
}
我使用以下XAML代码将转换器放入视图并注入MyInjectedService
:
<ResourceDictionary>
<ioc:ContainerProvider x:TypeArguments="valueConverters:MyConverter"
x:Key="MyConverter"
MyProperty ="{Binding DataContext.MyProperty}"/>
</ResourceDictionary>
所以我想把MyProperty
的值绑定到我的ViewModel中的一个对应的值。当实现这个时,我得到了错误消息:The property 'MyProperty' was not found in type 'ContainerProvider
1'` .这个问题有解决方案吗?谢谢你的帮助。
1条答案
按热度按时间kgsdhlau1#
我自己找到了一个解决方案。我将值转换器的构造函数改为:
所以我可以使用转换器的“普通”XAML声明。
此解决方案的一个要求是Prism ContainerProvider被声明为public和static。