2010-11-03 56 views
3

我在xaml頁面中具有帶datatemplate的樣式,如下所示。將數據模板設置爲適合silverlight datgrid列標題

< 

    Style x:Name="mytemplate" x:Key="mytemplate" xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data" 
           TargetType="dataprimitives:DataGridColumnHeader"> 
       <Setter Property="ContentTemplate" > 
        <Setter.Value> 
         <DataTemplate> 
          <StackPanel Background="Aqua" Height="{Binding this.DataGridColumnHeader.Height}" Width="{Binding this.DataGridColumnHeaderWidth}" > 
     <TextBlock Text="{Binding}" HorizontalAlignment="Center" FontWeight="Black" ></TextBlock> 
           <TextBox x:Name="{Binding}" Padding="0,-1,0,0" HorizontalAlignment="Stretch" Width="100" Height="20" KeyDown="txtfilterBox_KeyDown" LostFocus="txtfilterBox_LostFocus" /> 
          </StackPanel> 
         </DataTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 

此樣式將應用於silverlight datgrid列標題樣式。 現在我想要模板內的堆棧面板與 silverlight datgrid列標題的高度和寬度相同?那麼怎麼做呢?

要不然怎麼舒展內容模板來佔滿DataGrid列標題

回答

2

你試過設置StackPanel中的水平和垂直對齊屬性,以舒展的整個空間?你根本不需要綁定父容器的Width和Height屬性。

如果將StackPanel設置爲拉伸不起作用,只需將堆疊面板包裝在一個邊框中,您就會變成金色。請參閱下面的代碼:

<Style x:Name="mytemplate" x:Key="mytemplate" xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data" 
            TargetType="dataprimitives:DataGridColumnHeader"> 
        <Setter Property="ContentTemplate" > 
         <Setter.Value> 
          <DataTemplate> 
        <Border Background="Aqua" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
            <StackPanel> 
          <TextBlock Text="{Binding}" HorizontalAlignment="Center" FontWeight="Black" ></TextBlock> 
             <TextBox x:Name="{Binding}" Padding="0,-1,0,0" HorizontalAlignment="Stretch" Width="100" Height="20" KeyDown="txtfilterBox_KeyDown" LostFocus="txtfilterBox_LostFocus" /> 
            </StackPanel> 
        </Border> 
          </DataTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style>