如何在wpf datagrid中绑定行标题?

时间:2013-12-26 08:23:35

标签: c# wpf datagrid row

在我的项目中,我想要datagrid行标题值,如outlook calendar。假设是9.00,9.30,10.00,10.30 ......但是它不是固定的,可能会有所不同,晚上9点,晚上10点。

我正在使用两个TextBlock,我也得到了几乎相同的形状。但我的价值是固定的,即1-00,100,1-00,100-,100,1-00,........

我的代码 -

<DataGrid AutoGenerateColumns="False" Height="560" HorizontalAlignment="Left" Margin="30,54,0,0" Name="myDataGrid" VerticalAlignment="Top" Width="884" MouseDoubleClick="myDataGrid_MouseDoubleClick" IsEnabled="True" SelectionUnit="Cell">
        <DataGrid.RowHeaderTemplate>
            <DataTemplate>
                    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
                        <TextBlock Text="1" Foreground="#9493CF" FontSize="16" />
                        <TextBlock Text="00" Foreground="#9493CF" />
                    </StackPanel>
            </DataTemplate>
        </DataGrid.RowHeaderTemplate>
            <DataGrid.ContextMenu>
                <ContextMenu x:Name="LeftClickMenu">
                    <MenuItem Header="New Appointment" Click="MenuItem_Click"/>
                    <!--<MenuItem Header="Save"/>
                    <MenuItem Header="Print"/>-->
                    <Separator/>
                    <MenuItem Header="Exit"/>
                </ContextMenu>
            </DataGrid.ContextMenu>
        </DataGrid>

我想要什么 -

enter image description here

我得到了什么 -

enter image description here

1 个答案:

答案 0 :(得分:4)

您可以在第二个textBlock上指定negative top margin

<TextBlock Text="00" Foreground="#9493CF" Margin="1,-5,0,0"/>

带有负上边距的输出:

enter image description here

没有保证金的输出:

enter image description here

<强>更新

如果您希望自定义标题,则需要one property in your model class对象代表行)说Time,这对于不同的行会有所不同。对于第一行,时间值将为9,第二行为10,依此类推。

然后你可以像这样绑定到那个属性:

<StackPanel Orientation="Horizontal" VerticalAlignment="Center" 
            HorizontalAlignment="Center">
    <TextBlock Text="{Binding Path=DataContext.Time,
                        RelativeSource={RelativeSource Mode=FindAncestor,
                                                AncestorType=DataGridRowHeader}}"
                Foreground="#9493CF" FontSize="16" />
    <TextBlock Text="00" Foreground="#9493CF" />
</StackPanel>