"UCKit"(さまざまなパラメータを含む)列仕様を含むUserControl)がコントロールにバインドされています。 GridControlのItemsSourceを構成するクラスのプロパティであるObservableCollectionのCountプロパティにバインドされ、PropertyChanged通知に応答しません。また、grid.RefreshData( )。 xamlで単純なGridColumn宣言を使用するテストプログラムを作成し、Count列は正常に動作しますが、更新するコードにGridColumnsが組み込まれているグリッドを取得できません。DevExpress Grid:xaml宣言されたgridcolumnではプロパティのプロパティの通知が有効ですが、プログラムで追加されたgridcolumnでは使用できません
ここでは、正常に更新XAMLです:
<dxg:GridControl Grid.Column="0" HorizontalAlignment="Stretch" Name="griddywiddy2" AutoGenerateColumns="None"
Grid.Row="2" Grid.ColumnSpan="4" VerticalAlignment="Stretch" ItemsSource="{Binding MyDataColl, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="True"/>
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn Header="Row Name" Width="Auto" FieldName="RowName"/>
<dxg:GridColumn Header="Count" Width="Auto" FieldName="Stringz.Count"/>
</dxg:GridControl.Columns>
</dxg:GridControl>
せず、XAML + C#コード(行名の更新、カウントはしません):
<dxg:GridControl Grid.Column="0" HorizontalAlignment="Stretch" Name="griddywiddy" AutoGenerateColumns="None"
Grid.Row="1" Grid.ColumnSpan="4" VerticalAlignment="Stretch" ItemsSource="{Binding MyDataColl, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="True"/>
</dxg:GridControl.View>
</dxg:GridControl>
private void InitializeColumns()
{
griddywiddy.Columns.Add(
new DevExpress.Xpf.Grid.GridColumn()
{
Header = "Row Name",
Binding = new Binding("RowName")
{
Mode = BindingMode.TwoWay,
Converter = null
},
Width = 100
});
griddywiddy.Columns.Add(
new DevExpress.Xpf.Grid.GridColumn()
{
Header = "Count",
Binding = new Binding("Stringz.Count")
{
Mode = BindingMode.OneWay,
Converter = null
},
Width = 100
});
}
更新の私の2つの方法が両方ともxamlで宣言された列とコードビルドされた行名列の両方で動作します(テストプログラムのボタンクリックハンドラで呼び出されます)。
private void UpdBtn_Click(object sender, RoutedEventArgs e)
{
griddywiddy.RefreshData();
griddywiddy2.RefreshData();
}
private void UpdBtn2_Click(object sender, RoutedEventArgs e)
{
MyData incer = MyDataColl[0];
incer.NotifyPropertyChanged("Stringz.Count");
incer.NotifyPropertyChanged("RowName");
}
私は本当にこのCountプロパティがxamlのケースでは正しく動作するが、コードで構築されたケースでは正しく動作しないことに戸惑う。誰でも助言してくれますか?