In my WPF project (using C#) I have an XAML that contains a DataGrid. DataGrid has 4 columns headers (first one empty). On load I add a set of rows and add in the second cell of each row a string. I managed to add them, I guess, but they don't seem to be visible or maybe not added at all! I tried changing the color of text but couldn't find an easy way.
I'm new to WPF, so please can someone tell me what's the easiest way to add new rows and set their cells's text and their font color??
This is my 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>
And my 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 = "" });
}
}
}
}
1) To make the data visible try setting the ItemsSource
on button click..
var items = new List<MyDomain>();
foreach (string link in lst)
{
items.Add(new MyDomain { id = " ", url = link, AhrefsHttp = "", AhrefsWww = "", Archive = "" });
}
DGV.ItemsSource = items;
And bind the data to display in each column.
<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) To customize the appearance of cells, you might want to use a CellTemplate
, check this Link