【问题标题】:How to bind Row Header in wpf datagrid?如何在 wpf 数据网格中绑定行标题?
【发布时间】:2013-12-26 08:23:34
【问题描述】:

在我的项目中,我想要数据网格行标题值,例如 Outlook 日历。假设是 9.00, 9.30, 10.00, 10.30.... 但它不是固定的,它可能会有所不同,... 9.00 pm, 10.00 pm。

我为此使用了两个 TextBlock,而且我的形状也几乎相同。但我的值是固定的,即 1-00, 1-00,1-00, 1-00,1-00, 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>

我想要什么-

我得到了什么-

【问题讨论】:

标签: c# wpf datagrid row


【解决方案1】:

您可以在第二个文本块上指定negative top margin

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

上边距为负的输出:

无边距输出:

更新

如果您希望标题是可定制的,您需要有one property in your model class(object代表行)说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>

【讨论】:

  • 先生,我想设置值,9.00, 9.30, 10.00, 10.30.... 像这样,但我得到了 1 00, 1 00,1 00, 1 00,1 00, 1 00 ,1 00, 1 00 .. 这是我的问题。如何设置行标题中的值
  • 我只得到了 00,00,00。先生也解释一下财产
  • DataGrid 的 ItemSource 属性是什么?
  • 我的项目skydrive.live.com/…下载我的项目,看看源代码先生。
  • 好的,很好。您应该阅读更多关于 BindingMVVM 的信息。这将有助于您肯定地理解这个概念。
猜你喜欢
  • 2017-06-11
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 2011-05-28
  • 2011-09-28
相关资源
最近更新 更多