繁体   English   中英

WPF Datagrid单元格值编辑-C#

[英]WPF Datagrid cell value edit - C#

我有一个简单的datagrid,其中包含2列,使用可观察的集合填充。 要求是启用其中一列的单元格编辑,然后使用按钮将列数据保存在某处。 到目前为止,这就是我的实现方式:

查看模型:

 public class PlanningResult : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;
            private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
            {
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
            public string ProducerName { get; set; }
            public string leasename { get; set; }
}

可观察的集合:

ObservableCollection<PlanningResult> populatePatternData = new ObservableCollection<PlanningResult>();
public ObservableCollection<PlanningResult> PopulatePatternData
            {
                get { return populatePatternData; }
                set
                {
                    populatePatternData = value;
                    base.OnPropertyChanged("StringList");
                }
            }

XAML :我为属性ProducerName设置了“ IsReadOnly=False ”,因此允许用户在需要时更新此值。

 <DataGrid x:Name="PrintReport" ItemsSource="{Binding PopulatePatternData}" AutoGenerateColumns="False" FontFamily="Tahoma" FontSize="12" CanUserSortColumns="False"
                                                     HorizontalContentAlignment="Stretch"  VerticalContentAlignment="Stretch"  AlternatingRowBackground="Gainsboro"  AlternationCount="1" 
                                                     SelectionMode="Extended" SelectionUnit="Cell" >

                                            <DataGrid.Columns>
                                                    <DataGridTextColumn Header="Pattern" Binding="{Binding ProducerName}" IsReadOnly="False"  >
                                                    <DataGridTextColumn.ElementStyle>
                                                        <Style>
                                                            <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                                                            <Setter Property="TextBlock.TextAlignment" Value="Center"/>
                                                        </Style>
                                                    </DataGridTextColumn.ElementStyle>
                                                </DataGridTextColumn>
                                                    <DataGridTextColumn Header="Lease" Binding="{Binding leasename}" IsReadOnly="True" >
                                                    <DataGridTextColumn.ElementStyle>
                                                        <Style>
                                                            <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                                                            <Setter Property="TextBlock.TextAlignment" Value="Center"/>
                                                        </Style>
                                                    </DataGridTextColumn.ElementStyle>
                                                </DataGridTextColumn>

我的问题是,如何“获取列的更新值( ProducerName )”并重新填充observable collection ,下一步是什么?

使用双向模式绑定:

Binding="{Binding ProducerName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

每当用户更改单元格的值时,这将更新ObservableCollection中的特定项。

此外,使用命令以保存ObservableCollection的当前状态。 其中包括许多其他的答案和文章。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM