如何在datagrid的rowheadertemplate中设置一个值?

时间:2011-03-31 12:13:01

标签: wpf templates xaml binding

我正在尝试使用绑定来计算rowheadertemplate,但绑定不起作用。这就是我到目前为止所做的:

       <DataGrid Name="dgFruit" ItemsSource="{Binding}" AutoGenerateColumns="false"><!--ItemTemplate="{StaticResource datagrid}"-->
            <DataGrid.RowHeaderTemplate>
                <DataTemplate>
                    <Label Content="{Binding Path=Number, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
                </DataTemplate>
            </DataGrid.RowHeaderTemplate>
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Path=Name}" Header="Name"/>
                <DataGridTextColumn Binding="{Binding Path=Color}" Header="Color"/>
                <DataGridCheckBoxColumn Binding="{Binding Path=Mjummy}" Header="Mjummy"/>
            </DataGrid.Columns>
        </DataGrid>

如果我将内容设置为值,如“45”,我将获得行标题,但是当我尝试绑定时,不会再显示行标题。我正在尝试绑定到与列中的值相同的类中的属性。

那么,如何从列表中检索Number值?

提前致谢

2 个答案:

答案 0 :(得分:3)

似乎把它放在一个更好的风格中:

        <Style TargetType="DataGridRowHeader">
            <Setter Property="Content" Value="{Binding Path=Number}" />
            <Setter Property="Padding" Value="10,0,10,0" />
        </Style>

答案 1 :(得分:-1)

只需删除RelativeSource的东西:

<DataGrid.RowHeaderTemplate>
   <DataTemplate>
      <Label Content="{Binding Path=Number}"/>
   </DataTemplate>
</DataGrid.RowHeaderTemplate> 

Number是dataItem的属性,而不是Grid本身。