2009-07-17 5 views
1

私のXAMLコードでは、コントロールのHeightプロパティを親コントロールのActualHeightにバインドしました。元の値からオフセットを計算しなければならないので、IValueConverterを使用します。WPF:コントロールバインディング - C#コードからIValueConverterをトリガーする

Height="{Binding ElementName=MainCanvas, Path=ActualHeight, Converter={StaticResource adjustVerteilung} , ConverterParameter= 12}" 

これまでのところうまくいきます。

イベントが発生すると、ValueConverter内部の式が変更され、別の出力が生成されます。しかし、コントロールは、ウィンドウのサイズを変更すると、リフレッシュされ、整列されます。そこにコントロールを(C#コードから)リフレッシュしてValueConverterから新しい値を取得する方法はありますか?

答えて

1

バインディングにUpdateSourceTrigger = PropertyChangedを追加すると、ウィンドウのサイズが変更されてバインディングがMainCanvasによって更新された後ではなく、実際の高さが変更されるとすぐに値に再バインドする必要があります。

0

ActualHeightが変更されなくても値を変更したいと思うと思います。 AFAIKのValueConverterの機能はではなく、はそのようなことをするように設計されています。

別のものを試してください。実際に、あるイベントが発生したときに更新したいと考えられている高さであれば、カスタムパネルを構築してみてください。カスタムパネルはイベントに何らかの形でバインドされています。次に、「何らかのイベント」が発生すると、パネル内にあるコントロールの観測された高さを変更することができます。

関連する問題