我需要访问转换器附加到的entry组件,这样我就可以使用Entry.CursorPosition更改光标位置。
我有一个同时也是一个IValueConverter的BindableObject,我怎样才能到达入口
public class MaskConverter : BindableObject, IValueConverter
{
...
}发布于 2019-08-14 02:11:02
在XAML中,命名Entry并使用x:Reference
具有MyEntry属性的转换器(未显示Mode=TwoWay的ConvertBack):
public class MyConverter : BindableObject, IValueConverter
{
public Entry MyEntry { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var entry = MyEntry;
Debug.WriteLine($"convert:pos:{entry?.CursorPosition}:");
return (string)value;
}
...
}使用MyEntry属性的XAML (MyText是视图模型上的属性,未显示):
<ContentPage.Resources>
<local:MyConverter x:Key="myConverter" MyEntry="{x:Reference myEntry}" />
...
</ContentPage.Resources>
...
<Entry x:Name="myEntry" Text="{Binding MyText,
Converter={StaticResource myConverter}}">如果没有MyEntry属性,则可能会使用ConverterParameter将命名Entry传递给转换器
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var param = parameter as Entry;
Debug.WriteLine($"convert:pos:{param?.CursorPosition}:");
return (string)value;
}在ConverterParameter中传递命名Entry时使用XAML
<ContentPage.Resources>
<local:MyConverter x:Key="myConverter" />
...
</ContentPage.Resources>
...
<Entry x:Name="myEntry" Text="{Binding MyText,
Converter={StaticResource myConverter},
ConverterParameter={x:Reference myEntry}}">https://stackoverflow.com/questions/57468380
复制相似问题