Ich habe einen ValueConverter, der abhängig von einer Eigenschaft mit einem dynamischen Parameter aufgerufen werden muss. Ich kann nicht sehen, wie man dies zu tun ...Silverlight 4 Bindung an ConverterParameter
Width="{Binding ActualWidthValue, Source={StaticResource VisibleSize}, Converter={StaticResource Fraction}}"
Die „Fraktion“ des Wandlers get (oder sollte erhalten) einen Parameter des Typs System.Size, die einen Zähler und Nenner enthält. Dieser Wert hängt von ItemCollection.Count ab. Durch das Zurücksetzen der ItemCollection sollte der Converter erneut mit den neuen Werten aufgerufen werden.
Meine erste Idee war, das ConverterParameter in CodeBehind auf dem PropertyChanged-Ereignis meiner ItemCollection DependencyProperty manuell zu ändern. Aber wie ich jetzt weiß, hat Silverlight keine GetBinding() -Methode. Ich habe von GetBindingExpression gehört und versucht zu tun. Aber MyGrid.GetBindingExpression (Grid.ActualHeightProperty) gibt immer null zurück, obwohl die Bindung bereits eingerichtet ist.
Also, was kann ich tun, um mein Ziel zu erreichen?
Meine Implementierung war nicht viel anders. Ich setze den ConverterParameter in CodeBehind, kurz bevor der Converter über Binding aufgerufen wird. Das hat nicht funktioniert (Parameter enthält immer noch den Initialisierungswert).
Ich werde versuchen, Ihren Vorschlag zu verwenden. Aber warum ConverterParameter keine DependencyPropery sein kann. Was ist die Idee dahinter? Weiss es jemand?
Richtig, ich brauche einen anderen Wert - neben ActualWidthValue - um den richtigen Ausgangswert zu berechnen. Ich wollte diesen Wert als Parameter meiner Convert() - Methode übergeben. Der Koeffizient - sozusagen - ist eine Eigenschaft meines UserControl. Der ActualWidthValue ist eine Eigenschaft einer StaticResource, die ich verwende. Also, wie kann ich meinen IValueConverter ändern, um das gesamte UserControl UND meinen ActualWidthValue zu übernehmen? – 0xbadf00d
@ FREEzE2046: Siehe bearbeiten – AnthonyWJones