WPF 中DataGrid的应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 中DataGrid的应用相关的知识,希望对你有一定的参考价值。

1.DataGrid如何定一个“序号”列,根据显示的记录数由1递增?
2.如何通过DataGridHyperlinkColumn 获取参数跳转至其他页面?
点击相应的列能跳转就可以了
感谢各位的回答。 kangkinglee 按照你的方法convert报错了?

解题思路:
对于1,在WPF的DataGrid中没有显示的自动增加的字段属性,因为DataGrid是用多个基本控件组合而成,datagridrow有个getIndex()方法可以获得当前的row的Index,所以写个convert即可。
对于2,对于Hyperlink来说,将它放入Page或者frame,或者NavagiteWindow的容器中,系统会自动打开连接的内容,附上代码

Converter.cs
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

DataGridRow row = (DataGridRow)value;
var temp = row.GetIndex();
return temp+1;


public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

throw new NotImplementedException();

//xaml
<Frame Grid.Row="5">
<Frame.Content>
<DataGrid Name="dataGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="序号"
Binding="Binding Converter=StaticResource ResourceKey=debugConverter,RelativeSource=RelativeSource AncestorType=DataGridRow, Mode=FindAncestor,Mode=OneWay">
</DataGridTextColumn>
<DataGridHyperlinkColumn Header="点击链接" Binding="Binding Address">

</DataGridHyperlinkColumn>
</DataGrid.Columns>
</DataGrid>
</Frame.Content>
</Frame>
//xaml.cs
public MainWindow()

InitializeComponent();
List<Baidu> list1 = new List<Baidu> new Baidu Address = new Uri("http://www.baidu.com") ;

dataGrid.ItemsSource = list1;
//MessageBox.Show(dataGrid.Items.Count.ToString());


public class Baidu

public Uri Address get; set;
参考技术A 1.这个需要手动吧?给个复制的按钮.然后在内存表中做操作,再复制给你需要粘贴的datagrid.
2.如果你想把内容写到剪切板中,那还要规范数据类型和格式,那个就比较麻烦了.
我不知道你想要的效果是前者还是后者?
参考技术B 有一个datakeyNames属性,把表里的主键名写入就行了(主键一般都是自动增长列)本回答被提问者和网友采纳 参考技术C 在DataGrid中增加如下设置AutoGenerateColumns="False" 参考技术D 1.这个用索引号
2.你做的是web?

以上是关于WPF 中DataGrid的应用的主要内容,如果未能解决你的问题,请参考以下文章

在 C# WPF 中从 MySQL 数据库中填充 dataGrid

wpf datagrid 多行表头

使用 TextBox 和 DatePicker 元素过滤 WPF DataGrid 行

如何使用 MVVM 应用程序在 WPF 中以编程方式设置 DataGrid 的选定项?

在 WPF 中对 DataGrid 进行预排序

wpf datagrid怎么得到焦点?用datagrid.focus()不行