代码之家  ›  专栏  ›  技术社区  ›  Saleem Beep beep

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

  •  0
  • Saleem Beep beep  · 技术社区  · 10 年前

    在我的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 回复  |  直到 10 年前
        1
  •  1
  •   bit    10 年前

    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

        2
  •  1
  •   Lee O.    10 年前

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

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