2012-04-12 13 views
0

Ich versuche, einen Wert "MaxLines" an die Height-Eigenschaft TextBlock in WP7 App zu binden. Es gibt einen Konverter für die Bindung, der die LineHeight mit den MaxLines multiplizieren und die erwartete Höhe zurückgeben soll. Was ich sagen will, ist, dass ich die Anzahl der im TextBlock angezeigten Zeilen steuern möchte. Wie kann ich über den Konverter auf die LineHeight-Eigenschaft des TextBlocks zugreifen?Wie Binding Converter auf die Eigenschaft eines Steuerelements auf andere Eigenschaften des Steuerelements zugreifen kann

Um dies zu generic mache ich nicht die LineHeights getrennt halten wollten oder sie von Ansichtsmodell zugreifen diesen Artikel

Antwort

1

Check-out, Silverlight data binding and value converters, wo er erklärt, wie in Silverlight Databind. Im Beispiel verwendet er einen ValueConverter mit Parameterwert.

Ich denke, das ist was Sie brauchen, binden Sie einfach Ihre LineHeight an den Parameter. (Sie können für diese Verwendung Mischung)

+0

Passing der Objektreferenz oder die Zeilenhöhe durch ConverterParameter funktioniert nicht. Die Anwendung stürzt ab. – Prakash

+0

Was ist der Fehler? –

+0

Eine invalidOperationException bei MS.Internal.XamlManagedRuntimeRPInvokes.TryApplyMarkupExtensionValue (Objekt target, XamlPropertyToken propertyToken, Objekt value) – Prakash

1

Sie die Converter verwenden können:

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

oder übergeben Sie den ganzen Textblock:

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

dann in der Steuerung:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      var image = value as TextBlock; 
      /*do your magic here*/ 
} 
+0

Das Übergeben der Objektreferenz oder der Zeilenhöhe über ConverterParameter funktioniert nicht. Die Anwendung stürzt ab. – Prakash

+0

Höhe = "{Binding LineOneHeight, Konverter = {StaticResource hConverter}, ConverterParameter = {Binding ElementName = dTextblock}}" So bin ich verbindlich. – Prakash

+0

Versuchen Sie Folgendes: Höhe = "{Binding Converter = {StaticResource hConverter}, ConverterParameter = {Binding LineOneHeight, ElementName = dTextblock}}" –

Verwandte Themen