ItemSourceを使用してリストをデータグリッドにバインドしようとしています。
xaml.cs
<UserControl x:Class="DDCUI.CommDiagnosisWPFCtrl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" Height="800" Width="300">
<DockPanel>
<DataGrid DockPanel.Dock="Top" Height="300" AutoGenerateColumns="True" Name="DGComm" CanUserResizeColumns="True" IsReadOnly="True" ItemsSource="{Binding Source=dataGridRows}">
<DataGrid.Columns>
<DataGridTextColumn Header="No." Binding="{Binding Number}" Width="0.1*"/>
<DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="0.1*" />
<DataGridTextColumn Header="Protocol" Binding="{Binding Protocol}" Width="0.15*" />
<DataGridTextColumn Header="Source" Binding="{Binding Source}" Width="0.15*" />
<DataGridTextColumn Header="Destination" Binding="{Binding Destination}" Width="0.15*" />
<DataGridTextColumn Header="Data" Binding="{Binding Data}" Width="0.5*" />
</DataGrid.Columns>
</DataGrid>
<RichTextBox DockPanel.Dock="Bottom" Height="150" Name="RtbHexCode"/>
<TreeView DockPanel.Dock="Bottom" Height="200" Name="TreeViewDecode"/>
</DockPanel>
</UserControl>
コード:
public class CommDGDataSource
{
public string Number { get; set; }
public string Time { get; set; }
public string Protocol { get; set; }
public string Source { get; set; }
public string Destination { get; set; }
public string Data { get; set; }
}
private List<object> dataGridRows = new List<object>();
private void DGAddRow(string name, FunctionType ft)
{
CommDGDataSource ds = new CommDGDataSource();
ds.Protocol = name;
ds.Source = "";
ds.Destination = "";
ds.Number = rowCount.ToString();
ds.Data = "";
ds.Time = "";
dataGridRows.Add(ds);
}
DGAddRowが呼び出されると、DataGridはその値を更新しません。
私はここで何が間違っているのですか?どんな助けでもいただければ幸いです。
また、XAMLは、データが入力される前であっても、空の行を事前に生成します。アイテムで埋められた行のみを表示できるようにしたい(そして最後に埋められた行の下部に新しい行を追加したい)。どうすればこれを達成できますか?