2012-04-12 32 views
0

我试图将值“MaxLines”绑定到WP7应用程序的TextBlock的高度属性。有一个转换器绑定,它应该将LineHeight与MaxLines复合并返回预期的高度。我想说的是我想控制在TextBlock中显示的行数。我将如何能够从转换器访问TextBlock的LineHeight属性。如何绑定到控件的属性转换器可以访问控件的其他属性

为了使这个普通的我不想单独保持LineHeights或视图模型访问它们

回答

1

看看这篇文章,Silverlight data binding and value converters,他解释了如何在Silverlight数据绑定。在这个例子中,他使用ValueConverter和parametervalue。

我认为这就是你需要的,只需将你的LineHeight绑定到参数。 (可以使用该混合物)

+0

传通过ConverterParameter的对象引用或行高不起作用。应用程序崩溃。 – Prakash 2012-04-16 11:31:17

+0

什么是错误? – 2012-04-16 12:15:18

+0

一个InvalidOperationException在MS.Internal.XamlManagedRuntimeRPInvokes.TryApplyMarkupExtensionValue(对象目标,XamlPropertyToken propertyToken,对象的值) – Prakash 2012-04-16 12:34:02

1

可以使用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*/ 
} 
+0

通过ConverterParameter传递对象引用或行高不起作用。应用程序崩溃。 – Prakash 2012-04-16 11:31:33

+0

身高= “{结合LineOneHeight,转换器= {StaticResource的hConverter},ConverterParameter = {绑定的ElementName = dTextblock}}” 这是我怎么绑定。 – Prakash 2012-04-16 11:33:21

+0

尝试此:高度= “{结合转换器= {的StaticResource hConverter},ConverterParameter = {结合LineOneHeight,的ElementName = dTextblock}}” – 2012-04-17 10:57:12

相关问题