我想在Windows窗體應用程序中展開一個面板。我正在看看是否可以使用WPF Expander控件。我創建了一個Xaml UserControl,它從Expander而不是UserControl繼承。我在擴展器上有一個觸發器來設置它的大小。將ElementHost調整爲託管XAML UserControl的大小
是否可以更改ElementHost的高度以反映孩子的大小變化?或者我只是最好在Windows窗體中創建一個擴展面板?
我使用的是C#.Net 3.5。
乾杯
我想在Windows窗體應用程序中展開一個面板。我正在看看是否可以使用WPF Expander控件。我創建了一個Xaml UserControl,它從Expander而不是UserControl繼承。我在擴展器上有一個觸發器來設置它的大小。將ElementHost調整爲託管XAML UserControl的大小
是否可以更改ElementHost的高度以反映孩子的大小變化?或者我只是最好在Windows窗體中創建一個擴展面板?
我使用的是C#.Net 3.5。
乾杯
有你只是使用在UI的擴展繼承了擴展與什麼特別的原因?
如果您設置了擴展器的H/V對齊屬性,您應該能夠在沒有大小觸發的情況下獲得大多數標準大小調整行爲。根據我的經驗,Expander的內容部分會自動調整大小以適應。
如果您試圖完全刪除標題部分,那麼您可以考慮爲擴展器製作自己的ControlTemplate。
是的。您需要在最外層的WPF控件中覆蓋MeasureOverride
,將大小從WPF座標轉換爲設備座標,並更新ElementHost.Size
。
既然你已經繼承Expander
:
MeasureOverride
方法PresentationSource.From(visual).CompositionTarget.TransformToDevice.Transform(point)
來獲得設備座標ElementHost.Size
。你的Expander
子類實例將需要一個指向ElementHost
來做到這一點。
更通用的解決方案是創建一個新類來處理同步。它將繼承FrameworkElement
併成爲ElementHost
的直接子代。
您是否有示例代碼? – Phil 2011-10-07 01:14:57