的最快方式是到報頭的寬度結合到整個膨脹的寬度。
<Expander IsExpanded="True">
<Expander.Header>
<Grid Width="{Binding RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType={x:Type Expander}},
Path=ActualWidth}"
Height="50">
<Rectangle Fill="Red"></Rectangle>
</Grid>
</Expander.Header>
<Rectangle Fill="Red"></Rectangle>
</Expander>
但它不是一個精確的方法,因爲你有箭頭這也需要一定的空間,你可以看到,標題是比你更需要寬一點。
您可以覆蓋擴展器標題的標準模板(HeaderTemplate
)。
UPDATE
我發現使用the code-behind file(所有學分去@kmatyaszek)一個可能的解決方案。
添加一個輔助類來查找我們需要改變寬度的控件。它檢查父控件的整個可視化樹並返回我們正在尋找的類型的子對象。
public static class VTHelper
{
public static T FindChild<T>(DependencyObject parent) where T : DependencyObject
{
if (parent == null) return null;
T childElement = null;
int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < childrenCount; i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
T childType = child as T;
if (childType == null)
{
childElement = FindChild<T>(child);
if (childElement != null)
break;
}
else
{
childElement = (T)child;
break;
}
}
return childElement;
}
}
添加處理程序以處理加載事件。它改變了ContentPresenter
實例的HorizontalAlignment
屬性:
private void expander_Loaded(object sender, RoutedEventArgs e)
{
var tmp = VTHelper.FindChild<ContentPresenter>(sender as Expander);
if (tmp != null)
{
tmp.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
}
}
裝上此處理程序擴展:
<Expander IsExpanded="True" Loaded="expander_Loaded">
這種方法使用代碼隱藏,但它不與任何數據的工作(或視圖模型)。它僅改變控件的視覺外觀。
我會怎麼做,要刪除的箭頭?也許這會幫助 – JokerMartini
@JokerMartini檢查更新後的帖子。它顯示了另一種方法,可以在不移除箭頭的情況下解決問題。 –