2012-04-12 2 views
0

Я пытаюсь привязать значение MaxLines к свойству Height TextBlock в приложении WP7. Существует конвертер для привязки, который должен иметь несколько LineHeight с MaxLines и возвращает ожидаемую высоту. Я пытаюсь сказать, что я хочу контролировать количество строк, отображаемых в TextBlock. Как я смогу получить доступ к свойству LineHeight TextBlock из конвертера.Как Binding Converter в свойство элемента управления может обращаться к другим свойствам элемента управления

Чтобы сделать это родовое я не хочу поддерживать LineHeights отдельно или доступ к ним из ViewModel

ответ

1

Проверьте эту статью, Silverlight data binding and value converters, где он объясняет, как DataBind в Silverlight. В этом примере он использует ValueConverter с параметром.

Я думаю, что это то, что вам нужно, просто привяжите свой LineHeight к параметру. (Вы можете использовать смесь для этого)

+0

Passing ссылка на объект или высота строки через ConverterParameter не работает. Приложение сбой. – Prakash

+0

Какая ошибка? –

+0

Ошибка invalidOperationException в MS.Internal.XamlManagedRuntimeRPInvokes.TryApplyMarkupExtensionValue (Object target, XamlPropertyToken propertyToken, значение объекта) – Prakash

1

Вы можете использовать ConverterParameter:

<TextBlock x:Name="MyTextBlock" Height="{Binding ConverterParameter=Height, ElementName=MyTextBlock, Converter={StaticResource SomeConverter}}" Text="{Binding SomeLongText}" /> 

или пройти весь TextBlock:

<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*/ 
} 
+0

Передача ссылки на объект или высота строки через ConverterParameter не работает. Приложение сбой. – Prakash

+0

Height = "{Binding LineOneHeight, Converter = {StaticResource hConverter}, ConverterParameter = {Binding ElementName = dTextblock}}« Вот как я привязываюсь. – Prakash

+0

Попробуйте следующее: Height = "{Binding Converter = {StaticResource hConverter}, ConverterParameter = {Binding LineOneHeight, ElementName = dTextblock}}" –