Binding Datagrid WPF

228
23 июня 2018, 10:10

Для примера я в программу вставил две таблицы: В верхней таблице нумерация у меня получилась с помощью кодов

public class Person : ViewModelBase
{
   private const string ИмяФайлаБазыДанных = "БазаДанныхКадровыйОтчет.xml";
   private static Person экземпляр;
   private int номер;
   private string имя;
   public Таблица НаборДанных
   { get; set; }
   public Person()
   {
       this.НаборДанных = new Таблица();
       if (File.Exists(ИмяФайлаБазыДанных))
       {
           this.НаборДанных.ReadXml(ИмяФайлаБазыДанных);
           this.НаборДанных.AcceptChanges();
       }
   }
   public void Сохранить()
   {
       this.НаборДанных.WriteXml(ИмяФайлаБазыДанных);
       this.НаборДанных.AcceptChanges();
   }

    public int Номер
    {
        get { return номер; }
        set
        {
            номер = value;
            base.RaisePropertyChangedEvent("Номер");
        }
    }
    public string Имя
    {
        get { return имя; }
        set
        {
            имя = value;
            base.RaisePropertyChangedEvent("Номер");
        }
    }
   public static Person Экземпляр
    {
       get
        {
            return экземпляр ?? (экземпляр = new Person());
        }
    }
}

}

а вторую я создал с помощью Набора Данных DataSet

Далее код XAML

 <Window x:Class="ТаблицаDatGrid.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:ТаблицаDatGrid"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
    <Window.Resources>
        <local:Таблица x:Key="таблица"/>
        <CollectionViewSource x:Key="сотрудникиViewSource" 
                              Source="{Binding Сотрудники, Source={StaticResource таблица}}"/>
    </Window.Resources>
    <Window.DataContext>
        <local:MainViewModel/>
    </Window.DataContext>
    <Grid>
        <DataGrid x:Name="DGR" ItemsSource="{Binding БазаДанных}"
                  AutoGenerateColumns="False" Margin="0,0,0,188" Width="Auto" >
            <DataGrid.Columns>
                <DataGridTextColumn Header="Номер" Binding="{Binding Номер}"/>
                <DataGridTextColumn Header="Имя" Binding="{Binding Имя}"/>
            </DataGrid.Columns>
        </DataGrid>
        <DataGrid x:Name="DGR1" AutoGenerateColumns="False" 
                  EnableRowVirtualization="True" 
                  ItemsSource="{Binding Пользователи}" Margin="0,136,0,42" RowDetailsVisibilityMode="VisibleWhenSelected" Loaded="DGR1_Loaded">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="номерColumn" Binding="{Binding Номер, Mode=TwoWay}" Header="Номер" Width="Auto"/>
                <DataGridTextColumn x:Name="имяColumn" Binding="{Binding Имя}" Header="Имя" Width="SizeToHeader"/>
            </DataGrid.Columns>
        </DataGrid>
        <Button Content="Сохранить" HorizontalAlignment="Left" Height="27" Margin="10,282,0,0" VerticalAlignment="Top" Width="84" Click="Button_Click"/>
    </Grid>
</Window>

Ситуация в том что в верхней таблице есть нумерация и она работает, из класса Person я в XAML коде вставляю DataGridTextColumn Header="Номер" Binding="{Binding Номер}" нумерация строк видна, но при сохранении не сохраняется. А вторая таблица сохраняется, но когда я также в коде XAML вставляю DataGridTextColumn Header="Номер" Binding="{Binding Номер}", то строки не нумеруются, пробовал двустороннюю привязку типа Mode=TwoWay, ничего не происходит, лучше наверное для наглядного примера исходник в файлообменник закинуть потому как кода написанного для нумерации многовато. Но хотя бы с этого начать.

READ ALSO
Перепрыгнуть на другой Textbox

Перепрыгнуть на другой Textbox

Как мне сделать, чтобы при вводе в textbox перекидывала на следующий не используя Tab (TabIndex) К примеру через событие Textbox_textChanged

208
Исключения в контроллере FileResult

Исключения в контроллере FileResult

У меня есть метод, который возвращает файл пользователюНо во время выполнения метода возможно исключение

154
Добавить все строки из datagridview в checkedlistbox

Добавить все строки из datagridview в checkedlistbox

Код ниже (c# winforms vs2010) позволяет добавить текущую (выделенную) строку из datagridview1 на форме2 в checkedlistbox1 на форме1Подскажите пожалуйста, как изменить...

195
Архитектура ПО. Rx .NET

Архитектура ПО. Rx .NET

Всем привет! Недавно столкнулся с интересной задачей которая была решена "на коленке" и теперь ее нужно довести до умаСуть такова

169