#c# #wpf #xaml #data-binding
#c# #wpf #xaml #привязка данных
Вопрос:
Мне нужно сделать некоторую сложную привязку в XAML. У меня есть DependencyProperty
typeof(double)
; давайте назовем это SomeProperty
. Где-то в коде XAML моего элемента управления мне нужно использовать все SomeProperty
значение, где-то только половину, где-то SomeProperty/3
и так далее.
Как я могу сделать что-то вроде:
<SomeControl Value="{Binding ElementName=MyControl, Path=SomeProperty} / 3"/>
🙂
С нетерпением ждем.
Ответ №1:
Использовать разделение ValueConverter
:
public class DivisionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int divideBy = int.Parse(parameter as string);
double input = (double)value;
return input / divideBy;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
<!-- Created as resource -->
<local:DivisionConverter x:Key="DivisionConverter"/>
<!-- Usage Example -->
<TextBlock Text="{Binding SomeProperty, Converter={StaticResource DivisionConverter}, ConverterParameter=1}"/>
<TextBlock Text="{Binding SomeProperty, Converter={StaticResource DivisionConverter}, ConverterParameter=2}"/>
<TextBlock Text="{Binding SomeProperty, Converter={StaticResource DivisionConverter}, ConverterParameter=3}"/>