画像、テキストボックス、ボタンを含むユーザーコントロールがあります。とを実装MeasureOverride()
しArrangeOverride()
ます。これは基本的に、テキストボックスのTextプロパティを考慮に入れてサイズを変更します。
しかし...ArrangeOverride()
そしてテキストが設定される前MeasureOverride()
に一度だけ呼び出されます。データバインディングを介してテキストが変更/更新された後、再計算のために再度呼び出されることはありません。
AffectsRender
WPFにメタデータフラグがあり、また、が存在することは知っていますが、InvalidateVisual
私はWindows8ランタイムランドにいます。ここでこれを行うにはどうすればよいですか?
protected override Size MeasureOverride(Size availableSize)
{
Size panelDesiredSize = new Size();
m_textbox.Measure(availableSize);
if (m_textbox.DesiredSize.Height < m_textbox.MinHeight)
{
panelDesiredSize = new Size(
m_textbox.DesiredSize.Width, m_textbox.MinHeight);
}
else
{
panelDesiredSize = m_textbox.DesiredSize;
}
return panelDesiredSize;
}
protected override Size ArrangeOverride(Size finalSize)
{
double x = 0;
double y = 0;
m_textbox.Arrange(new Rect(new Point(x, y), finalSize));
m_button.Arrange(new Rect(new Point(x, y), finalSize));
m_image.Arrange(new Rect(new Point(x, y), finalSize));
m_button.Width = finalSize.Width;
m_button.Height = finalSize.Height;
m_image.Width = finalSize.Width;
m_image.Height = finalSize.Height;
return finalSize; // Returns the final Arranged size
}