をDataGridにバインドしObservableCollection
ていますが、空白の行からobservablecollectionにアイテムを追加できるようにしたいと考えています。ただし、実行時にリストが空の場合、この空白行は表示されません。私はこの問題を調べました、私は持っていますCanUserAddRows=true
、私は持っていますIsReadOnly=false
、そして私はデータグリッドのデータコンテキストを監視可能なコレクションに設定しました、そして私は空のコンストラクターを持っています、そしてそれはまだ機能していません。これが私がこれまでに持っているものです:
XAMLの場合:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Source={StaticResource CostCenterListViewSource}}" Name="costCenterListDataGrid" VerticalAlignment CanUserAddRows="True" CanUserDeleteRows="True" IsReadOnly="False">
<DataGrid.Columns>
<DataGridTextColumn x:Name="nameColumn" Binding="{Binding Path=Name, Mode=TwoWay}" Header="Cost Center" Width="102" />
<DataGridTextColumn x:Name="glCodeColumn" Binding="{Binding Path=GlCode, Mode=TwoWay}" Header="Gl Code" Width="80" />
<DataGridTextColumn x:Name="costCenterPercentageColumn" Binding="{Binding Path=CostCenterPercentage, Mode=TwoWay}" Header="%" Width="30" />
</DataGrid.Columns>
</DataGrid>
私の背後にあるコードにはこれがあります:
costCenterListDataGrid.DataContext = item.CostCenterList;
//when "item" was instantiated, it also created a new instance: costCenterList = new ObservableCollection<CostCenter>();
そしてCostCenterクラスで私は持っています:
public CostCenter()
{
}
public string Name
{
get { return name; }
set
{
if (String.IsNullOrEmpty(Name) || !Name.Equals(value))
{
name = value;
OnPropertyChanged("Name");
}
}
}
public string GlCode
{
get { return glCode; }
set
{
if (String.IsNullOrEmpty(GlCode) || !GlCode.Equals(value))
{
glCode = value;
OnPropertyChanged("GlCode");
}
}
}
public double CostCenterPercentage
{
get { return cPercentage; }
set
{
if (CostCenterPercentage != value)
{
cPercentage = value;
OnPropertyChanged("CostCenterPercentage");
}
}
}
編集:これは私のWindow.Resourcesにあるものです
<Window.Resources>
<CollectionViewSource x:Key="jobItemViewSource1" d:DesignSource="{d:DesignInstance my:JobItem, CreateList=True}" />
<CollectionViewSource x:Key="jobItemNotesHistoryViewSource" Source="{Binding Path=NotesHistory, Source={StaticResource jobItemViewSource1}}" />
<CollectionViewSource x:Key="CostCenterListViewSource" Source="{Binding Path=CostCenterList, Source={StaticResource jobItemViewSource1}}" />
<CollectionViewSource x:Key="CostCenterListAfesViewSource" Source="{Binding Path=Afes, Source={StaticResource CostCenterListViewSource}}" />
</Window.Resources>