2009-07-06 18 views
2

我想在Windows窗體應用程序中展開一個面板。我正在看看是否可以使用WPF Expander控件。我創建了一個Xaml UserControl,它從Expander而不是UserControl繼承。我在擴展器上有一個觸發器來設置它的大小。將ElementHost調整爲託管XAML UserControl的大小

是否可以更改ElementHost的高度以反映孩子的大小變化?或者我只是最好在Windows窗體中創建一個擴展面板?

我使用的是C#.Net 3.5。

乾杯

回答

0

有你只是使用在UI的擴展繼承了擴展與什麼特別的原因?

如果您設置了擴展器的H/V對齊屬性,您應該能夠在沒有大小觸發的情況下獲得大多數標準大小調整行爲。根據我的經驗,Expander的內容部分會自動調整大小以適應。

如果您試圖完全刪除標題部分,那麼您可以考慮爲擴展器製作自己的ControlTemplate。

0

是的。您需要在最外層的WPF控件中覆蓋MeasureOverride,將大小從WPF座標轉換爲設備座標,並更新ElementHost.Size

既然你已經繼承Expander

  1. 覆蓋的MeasureOverride方法
  2. 測量計算後,使用PresentationSource.From(visual).CompositionTarget.TransformToDevice.Transform(point)來獲得設備座標
  3. 更新ElementHost.Size

你的Expander子類實例將需要一個指向ElementHost來做到這一點。

更通用的解決方案是創建一個新類來處理同步。它將繼承FrameworkElement併成爲ElementHost的直接子代。

+0

您是否有示例代碼? – Phil 2011-10-07 01:14:57

相關問題