Как Binding Converter для свойства элемента управления может получить доступ к другим свойствам элемента управления
Я пытаюсь привязать значение "MaxLines" к свойству TextBlock's Height в приложении WP7. В привязке есть конвертер, который должен умножить LineHeight на MaxLines и вернуть ожидаемую высоту. Я пытаюсь сказать, что я хочу контролировать количество строк, отображаемых в TextBlock. Как я смогу получить доступ к свойству LineHeight TextBlock из конвертера.
Чтобы сделать это универсальным, я не хотел поддерживать LineHeights отдельно или обращаться к ним из viewModel
2 ответа
Ознакомьтесь с этой статьей, Связывание данных Silverlight и преобразователи значений, где он объясняет, как связывать данные в Silverlight. В примере он использует ValueConverter с параметром value.
Я думаю, что это то, что вам нужно, просто привяжите свой LineHeight к параметру. (Вы можете использовать Blend для этого)
Вы можете использовать ConverterParameter:
<TextBlock x:Name="MyTextBlock" Height="{Binding ConverterParameter=Height, ElementName=MyTextBlock, Converter={StaticResource SomeConverter}}" Text="{Binding SomeLongText}" />
или передать весь текстовый блок:
<TextBlock x:Name="MyTextBlock" Height="{Binding Converter={StaticResource ImageFileConverter}, ElementName=DropdownImage}" Text="{Binding SomeLongText}" />
Тогда внутри контроллера:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var image = value as TextBlock;
/*do your magic here*/
}