3

我在 xaml 页面中有一个带有数据模板的样式,如下所示。

<

    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 列标题样式。现在我希望模板内的 stackpanel 与 silverlight datgrid 列标题的高度和宽度相同?那怎么做呢?

否则如何拉伸内容模板以填充数据网格列标题的整个空间

4

1 回答 1

2

您是否尝试过将 StackPanel 的水平和垂直对齐属性设置为拉伸?您根本不需要绑定到父容器的 Width 和 Height 属性。

如果将 StackPanel 设置为拉伸不起作用,只需将堆栈面板包装在 Border 中,您就会变成金色。请看下面的代码:

<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>
于 2011-12-07T16:09:35.250 回答