繁体   English   中英

自定义WPF DataGrid列

[英]Custom WPF DataGrid Column

我试着在过去一周左右为wpf数据网格制作自定义列

要点是,我在整个应用程序的多个数据网格中显示某些类型的数据,并且我不想每次都重新声明所有属性

下面是一些反复使用的代码示例

<DataGridComboBoxColumn SelectedValueBinding="{Binding PersonID}" SelectedValuePath="PersonID" DisplayMemberPath="PersonName" Header="Customer" ItemsSource="{Binding Source={StaticResource PersonSource}}" />

所以我试着像这样做一个usercontrol

Public Class PersonColumn
Inherits DataGridComboBoxColumn
Sub New()
    SelectedValuePath = "PersonID"
    DisplayMemberPath = "PersonName"
    Header = "Customer"
End Sub
End Class

这是一个帮助,但不完整,因为

  1. 我不能做任何样式或其他标记工作
  2. 我似乎无法使用FindResource命令来获取PersonSource

怎么能改善? 我的所有搜索都反复显示xaml redone,这似乎非常多余

同时我试图建立一个datepicker列,但无法找到任何可重用列的样本,只需再次在每个数据网格中重新定义

非常感谢你

编辑

我现在尝试一个完全不同的方向

我使用以下标记进行了用户控制

<DataGridTemplateColumn Header="Date" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"      xmlns:my="clr-namespace:SampleWpf"  x:Class="DateColumn">
<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type my:DateColumn}}, Path=Value}" />
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <DatePicker SelectedDate="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type my:DateColumn}}, Path=Value}"  />
    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>

还有一些代码隐藏

Public Class DateColumn
Inherits DataGridTemplateColumn
Public Shared ReadOnly ValueProperty = DependencyProperty.Register("Value", GetType(Date?), GetType(DateColumn))
Property Value As Date?
End Class

但这不起作用。 日期未显示在列中,我的更改也未保存回数据源

datagrid xaml很简单

                <my:DateColumn   Value="{Binding Path=ReceivedOn}" Header="ReceivedOn" />

你们都是怎么做这些东西的? 谢谢十亿!

您应该能够在Application的Resources中创建可重用的DataTemplate ,然后只需使用指定的CellTemplate添加DataGridTemplateColumn

<DataGridTemplateColumn CellTemplate="{DynamicResource CustomColumnTemplate}" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM