在WPF项目中创建简单DataGrid并设置其单元格字体的最简单方法是什么

时间:2014-08-04 21:36:56

标签: c# wpf xaml datagrid wpfdatagrid

在我的WPF项目中(使用C#)我有一个包含DataGrid的XAML。 DataGrid有4列标题(第一个为空)。 在加载时,我添加一组行,并在每行的第二个单元格中添加一个字符串。 我想,我设法添加它们,但它们似乎不可见或者根本没有添加! 我尝试改变文字的颜色,但找不到简单的方法。

我是WPF的新手,所以请有人告诉我,添加新行和设置单元格文本及其字体颜色的最简单方法是什么?

这是我的XAML:

<Grid>
    <Button Content="Button" HorizontalAlignment="Left" Margin="10,36,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
    <DataGrid x:Name="DGV" HorizontalAlignment="Left" Margin="10,60,-88,0" VerticalAlignment="Top" Width="554" Height="103" Panel.ZIndex="1" RowBackground="#FFC6C6C6" FontWeight="Bold" CanUserSortColumns="False" CanUserResizeColumns="False" CanUserReorderColumns="False" MinColumnWidth="10" IsReadOnly="True">
        <DataGrid.Columns>
            <DataGridTextColumn Header=" "/>
            <DataGridTextColumn Header="URL" Width="295"/>
            <DataGridTextColumn Header="Ahrefs(http)" Width="79"/>
            <DataGridTextColumn Header="Ahrefs(www.)" Width="79"/>
            <DataGridTextColumn Header="Archive" Width="79"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

我的xaml.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        public struct MyDomain
        {
            public string id { set; get; }
            public string url { set; get; }
            public string AhrefsHttp { set; get; }
            public string AhrefsWww { set; get; }
            public string Archive { set; get; }
        }


        private void Button_Click(object sender, RoutedEventArgs e)
        {
            List<string> lst;

            lst = new List<string>();

            lst.Add("google.com");
            lst.Add("yahoo.com");
            lst.Add("facebook.com");

            foreach (string link in lst)
            {
                DGV.Items.Add(new MyDomain { id = " ", url = link, AhrefsHttp = "", AhrefsWww = "", Archive = "" });
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

DataGrid中没有显示任何内容的原因是因为您没有将网格的列绑定到ItemsSource的任何属性。要更改单元格文本颜色,请使用Foreground属性。

<DataGridTextColumn Header="URL"
                    Width="295"
                    Binding="{Binding url}"
                    Foreground="Red" />

答案 1 :(得分:1)

1)要使数据可见,请尝试在按钮上设置ItemsSource单击..

var items = new List<MyDomain>();
foreach (string link in lst)
            {
                items.Add(new MyDomain { id = " ", url = link, AhrefsHttp = "", AhrefsWww = "", Archive = "" });
            }
DGV.ItemsSource = items;

并绑定数据以显示在每列中。

 <DataGridTextColumn Header="URL" Width="295" Binding="{Binding url}" />
 <DataGridTextColumn Header="Ahrefs(http)" Width="79" Binding="{Binding AhrefsHttp}" />
 <DataGridTextColumn Header="Ahrefs(www.)" Width="79" Binding="{Binding AhrefsWww}" />
 <DataGridTextColumn Header="Archive" Width="79" Binding="{Binding Archive}" />

2)要自定义单元格的外观,您可能需要使用CellTemplate,请检查此Link