【发布时间】:2020-10-19 12:57:20
【问题描述】:
我有这个代码:
namespace Test
{
public partial class SearchField : UserControl
{
public SearchStrategy Strategy { get; set; }
public SearchField() { InitializeComponent(); }
}
public class TextToTipConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
SearchStrategy Strategy = // How do I get reference to SearchField.Strategy from here?
return Strategy.parseInput<string> (value.ToString(), (first, inp) => Strategy.tipMap.ContainsKey(first) && inp.Length == 1 ? first + Strategy.tipMap[first] : "", AppResources.GeneralSearchTip);
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
XAML 中的代码:
<UserControl.Resources>
<controls:TextToTipConverter x:Key="TextToTip" />
</UserControl.Resources>
...
<TextBox x:Name="Search" Grid.Column="0" Canvas.ZIndex="1"
Style="{StaticResource SearchBoxStyle}" Foreground="{StaticResource PhoneForegroundBrush}" />
<TextBox x:Name="Tip" Grid.Column="0" Canvas.ZIndex="0" IsReadOnly="True"
Style="{StaticResource SearchBoxStyle}" Opacity="0.5" Foreground="{StaticResource PhoneAccentBrush}"
Text="{Binding ElementName=Search, Converter={StaticResource TextToTip}, Path=Text}" />
SearchField 的SearchStrategy Strategy 有一些我需要从TextToTipConverter 访问的方法和字段。
我怎样才能得到它?
【问题讨论】:
-
我过去遇到过类似的问题。理想的做法是将您的 SearchStrategy 对象绑定到 ConverterParameter,但这是不可能的,因为 Binding 不是 DependencyObject,因此 ConverterParameter 不可绑定。通过 value 参数将什么类型的对象传递给 Convert() 方法?
-
@RaySaltrelli 我已经更新了帖子并包含了 XAML。
标签: c# reference code-behind windows-phone-8