Я пытаюсь сделать пользовательский конвертер, который наследуется от DependencyObject
, но он не работает:Связывание в конвертере?
Преобразователь:
public class BindingConverter : DependencyObject , IValueConverter
{
public object Value
{
get { return (object)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(object), typeof(BindingConverter), new PropertyMetadata(null));
public object Convert(object value, Type targetType, object parameter, Globalization.CultureInfo culture)
{
Debug.Assert(Value != null); //fails
return Value;
}
public object ConvertBack(object value, Type targetType, object parameter, Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Xaml:
<StackPanel x:Name="this">
<!--works-->
<ContentControl Content="{Binding ActualHeight, ElementName=this}"/>
<!--doesn't work-->
<ContentControl>
<Binding>
<Binding.Converter>
<BindingConverter Value="{Binding ActualHeight, ElementName=this}" />
</Binding.Converter>
</Binding>
</ContentControl>
<TextBlock Text="{Binding Animals}"/>
</StackPanel>
Я пропускаю что-нибудь ?
прежде всего, извините за выбор ActualHeight/Ширина для моего примера. В моем реальном примере я пытаюсь реализовать конвертер, который имитирует функциональность WPF '{RelativeSource PreviuosData}'. Поэтому для этого я хочу перейти со ссылкой, ссылкой на коллекцию. Я пытался связать с '{Binding Converter = {PreviousDataConverter Collection = {Binding ItemsSource, ElementName = myItemsControl}}}'. – Shimmy
Думаю, теперь у меня вопрос, вы пытаетесь показать текущие и предыдущие данные источника вместе с UI. Если я прав, вы можете достичь этой функции, используя параметр Converter. Раньше я не нуждался в этом feautre, но для некоторых преобразователей я передавал параметр для метода Convert для разных ответов. {Binding Source = itemssouce, converter = preconverter, converterparameter = {Binding ElementName = X, Path = index?}, ... что-то вроде этого? –
Это наверняка не сработает, конвертер 'Parameter' не является связующим AFAIK. – Shimmy