繁体   English   中英

带有自定义数据的数据网格中的新行

new row in datagrid with custom data

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有两个数据网格。 第一个是关于时间跟踪的概述。 第二个显示了一些细节。

例如:第一个数据网格包含员工工作的每一天。 第二个数据网格包含一天的时间戳。

但是,当我添加新的冲压行时,数据网格中的控件为空。 这不是一个真正的问题,但日期选择器显示日期 01/01/0001。

我想要的是当我添加一个新行时,日期字段应该填充第一个数据网格中的日期。

看法:

 <DataGrid Grid.Column="0"
                          IsReadOnly="True"
                          AutoGenerateColumns="False"
                          Grid.Row="0"
                          x:Name="DgStundenView"
                          Margin="0 0 10 0"
                          SelectedItem="{Binding SelectedItem}"
                          ItemsSource="{Binding TimeOverviewList}">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Wochentag" Binding="{Binding Wochentag}" />
                    <DataGridTextColumn Header="Datum" Binding="{Binding Tag}" />
                    <DataGridTextColumn Header="Arbeitszeit Soll" Binding="{Binding ArbeitszeitInStunden}" />
                    <DataGridTextColumn Header="Arbeitszeit gesamt" Binding="{Binding GesamtDauerInStunden}" />
                    <DataGridTextColumn Header="Pausenzeit" Binding="{Binding Pausenzeit}" />
                    <DataGridTextColumn Header="Pausendifferenz" Binding="{Binding PausenDifferenzInStunden}" />
                    <DataGridTextColumn Header="Arbeitszeit inkl. Pause" Binding="{Binding TatsaechlicheDauerInStunden}" />
                    <DataGridCheckBoxColumn Header="Status" Binding="{Binding StempelungVorhanden,Mode=OneWay}" />
                    <DataGridTextColumn Header="Info" Binding="{Binding Info}" />
                </DataGrid.Columns>

                <DataGrid.RowStyle>
                    <Style TargetType="DataGridRow">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Wochentag}" Value="Sa">
                                <Setter Property="Background" Value="LightGray" />
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Wochentag}" Value="So">
                                <Setter Property="Background" Value="LightGray" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </DataGrid.RowStyle>
            </DataGrid>

            <DataGrid Grid.Column="0"
                      Grid.Row="1"
                          x:Name="DgStempelungen"
                          Margin="0 10 10 0"
                          AutoGenerateColumns="False"
                      CanUserAddRows="True"
                      SelectedItem="{Binding SelectedValue}"
                      ItemsSource="{Binding TimeDetailList}">


                <DataGrid.Resources>
                    <x:Array x:Key="Reasons" Type="system:String">
                        <system:String>NICHT ANWENDBAR</system:String>
                        <system:String>KRANK</system:String>
                        <system:String>GANZER TAG URLAUB</system:String>
                    </x:Array>
                </DataGrid.Resources>

                <DataGrid.Columns>

                    <DataGridTextColumn Header="ID" IsReadOnly="True" Binding="{Binding  Id}"/>
                    <DataGridTemplateColumn Header="KOMMEN DATUM">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <DatePicker SelectedDate="{Binding  ComeBooking}"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="KOMMEN UHRZEIT">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <materialDesign:TimePicker Text="{Binding ComeBookingTime, StringFormat=t}"
                                                           Is24Hours="True">
                                </materialDesign:TimePicker>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="GEHEN DATUM">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <DatePicker SelectedDate="{Binding GoBooking}"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="GEHEN UHRZEIT">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <materialDesign:TimePicker Text="{Binding GoBookingTime, StringFormat=t}"
                                                           Is24Hours="True">
                                </materialDesign:TimePicker>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridComboBoxColumn Header="GRUND"
                                            ItemsSource="{StaticResource Reasons}"
                                            TextBinding="{Binding Info}"/>

查看 MODEL

   [CanBeNull] private ClassTimeTrackingDayStamp _selectedItem;

        [CanBeNull]
        public ClassTimeTrackingDayStamp SelectedItem
        {
            get { return _selectedItem; }
            set
            {
                _selectedItem = value;
                OnPropertyChanged();
                if (_selectedItem != null)
                    TimeDetailList = new ObservableCollection<ClassTimeTrackingTimeStamp>(_selectedItem.Stempelungen);
            }
        }

        private ObservableCollection<ClassTimeTrackingDayStamp> _timeOverviewList;

        public ObservableCollection<ClassTimeTrackingDayStamp> TimeOverviewList
        {
            get { return _timeOverviewList; }
            set
            {
                _timeOverviewList = value;
                OnPropertyChanged();
            }
        }

        [CanBeNull] private ObservableCollection<ClassTimeTrackingTimeStamp> _timeDetailList;

        [CanBeNull]
        public ObservableCollection<ClassTimeTrackingTimeStamp> TimeDetailList
        {
            get { return _timeDetailList; }
            set
            {
                _timeDetailList = value;
                OnPropertyChanged();
            }
        }

MODEL

   public class ClassTimeTrackingTimeStamp : ViewModelBase
    {
        public DateTime ComeBooking { get; set; }

        public DateTime GoBooking { get; set; }

        public TimeSpan ComeBookingTime { get; set; }
        public TimeSpan GoBookingTime { get; set; }

        public int Id { get; set; }

        public string Info { get; set; }
    }

谢谢您的帮助:)

最好的问候莱文

问题暂未有回复.您可以查看右边的相关问题.
1 将数据添加到DataGrid的新行

我试图将仅包含标题的行添加到数据表中。 我希望像这样设置数据表中的数据。 第1行----回合数据 第2行----来自文本框的数据 我现在得到的是 第1行----舍入数据---来自文本框的数据 我应该如何修改代码,以便将数据排成一行? ...

2 WPF:绑定到自定义类的Datagrid上的新行

我使用OnPropertyChanged event和ObservableCollection创建了一些自定义数据容器类,并将其绑定到WPF中的datagrid。 问题是每次程序启动时,数据网格都会在底部自动创建一个新行。 此新行不存在于我的ObservableCollection中,因此对 ...

3 复制datagrid行并将其粘贴到WPF数据网格中的新行

我有一个wpf datagrid,它允许用户添加行。 我需要添加一个功能,用户可以在其中复制数据行,并在粘贴时将其添加为新行。 我可以复制(Ctrl + C)行,但是在粘贴(Ctrl + V)时,所有项目都粘贴到该行的第一个单元格上。 我如何将其粘贴到该行的每个单元格中。 到目前为 ...

4 自定义DataGrid行选择

我有一个带有2列,一个文本和一个ToggleButton的DataGrid控件。 我需要能够单击ToggleButton单元, 而不必单击该行来选择该行。 ToggleButton是show \\ hide属性,我不希望它更改当前选定的项目。 这是xaml代码: ...

5 将新的Datagrid行保存到数据库

在C# WPF工作。 好的,我有一个datagrid绑定到我的项目中的entity framework 。 更新显示的值时,数据网格功能非常棒。 我使用MyDataEntity.SaveChanges()将更改推送到database ,一切正常。 添加新行时会出现此问题。 我在我的 ...

6 取消在DataGrid中添加新行

我有一个绑定到DataGrid的ObservableCollection,我希望用户能够将数据添加到网格中,但是仅当添加的所有条目的总和小于100%时。 为了使数据网格集中于接受数据的单元格,我使用了处理DataGrid.RowEditEnding事件的代码。 这很棘手,但在一定程度上可 ...

7 WPF Datagrid 新行验证

我用 DataGrid 制作了一个简单的 WPF 应用程序,它使用 Employee 对象绑定到 List: 如您所见,我想防止在没有设置 Name 属性的情况下创建员工。 所以,我制定了一个验证规则: 名称字段的 XAML 如下: 如果我尝试在 DataGrid 中编辑现有员工行的名称并将其设置为 ...

8 CanUserAddRows新行未保存在DataGrid中

创建DataGrid并设置CanUserAddRows="True" 有一个按钮可以将更新保存在cs文件中: 窗口的datagrid还没有一个可编辑的textbox ,可以使用“保存单击”按钮正确保存编辑。 只是新行不是。 有任何想法吗?? 数据网格定义: ...

暂无
暂无

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

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