0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109

Отображение названия серии

28.09.2018, 15:48. Показов 2256. Ответов 64
Метки wpf (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Пытаюсь сделать так, чтобы в textbox загружалось выбранное значение из другого она. Получается, что сначала появляется одна wpf-форма, там текстбокс с кнопкой. По нажатию на кнопку должен выводится в отдельное окно весь список серий в листбокс. После выбора серии и подтверждении выбора выбранная серия должна установится в текстбокс формы. Подскажите пожалуйста как это реализовать. Связь Book-Seria - один-ко-многим(в серии может быть много книг). Код приводится:
Класс Book.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
 
 
    [Table("Book")]
    public partial class Book
    {
       [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Book()
        {
            Authors = new HashSet<Author>();
            Languages = new HashSet<Language>();
            Readers = new HashSet<Reader>();
        }
 
        [Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int BookId { get; set; }
 
        public string InstanceNumber { get; set; }
        public int LanguageId { get; set; }
        public Language Language1 { get; set; }
        public int AuthorId { get; set; }
        public Author NameShort { get; set; }
        public string BookTitle { get; set; }
        public string ParallelTitle { get; set; }
        public string ParallelTitleLang { get; set; }
        public string StatementOfResponsibility { get; set; }
        public string PlaceOfPublication { get; set; }
        public string PublishingHouse { get; set; }
        public int PublicationDate { get; set; }
        public string Sheets { get; set; }
        public int SeriaId { get; set; }
        public Seria TitleSeria { get; set; }
        public string IndexUDC { get; set; }
        public int SubjectId { get; set; }
        public Subject SujectTitle { get; set; }
 
        public string CreationDate { get; set; }
        public string DateOfChanging { get; set; }
 
        [Timestamp]
        public byte[] Timestamp { get; set; }
 
        public virtual Author Author { get; set; }
        public virtual Seria Seria { get; set; }
        public virtual Subject Subject { get; set; }
 
        public virtual ICollection<Author> Authors { get; set; }
        public virtual ICollection<Language> Languages { get; set; }
        public virtual ICollection<Reader> Readers { get; set; }
    }
}
Класс Seria.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
 
 
    [Table("Seria")]
    public partial class Seria
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Seria()
        {
            Books = new HashSet<Book>();
        }
        [Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int SeriaId { get; set; }
 
        public string TitleSeria { get; set; }
        public string AboutSeria { get; set; }
 
 
        [Timestamp]
        public byte[] Timestamp { get; set; }
 
        public virtual ICollection<Book> Books { get; set; }
    }
 
 
}
Основная форма(за отсутствием тут xaml, использую выделение xml):
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<Window x:Class="VerlibrDiplom.Views.ChangeViews.UpdateBook"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:VerlibrDiplom.Views.ChangeViews"
        mc:Ignorable="d"
        Title="UpdateBook" Height="800" Width="300">
    <Grid Background="Lavender">
        <TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Инвентарнный номер" VerticalAlignment="Top"/>
        <TextBox x:Name="tbAddBookInstanceNumber" HorizontalAlignment="Left" Height="23" Margin="162,10,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.InstanceNumber}" VerticalAlignment="Top" Width="120"/>
        <TextBlock HorizontalAlignment="Left" Margin="18,90,0,0" TextWrapping="Wrap" Text="Автор" VerticalAlignment="Top"/>
        <TextBox x:Name="tbAddBookAuthor" HorizontalAlignment="Left" Height="23" Margin="162,90,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.NameShort}" VerticalAlignment="Top" Width="70"/>
        <TextBlock HorizontalAlignment="Left" Margin="10,133,0,0" TextWrapping="Wrap" Text="Название" VerticalAlignment="Top"/>
        <TextBox x:Name="tbAddBookTitle" HorizontalAlignment="Left" Height="23" Margin="162,133,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.BookTitle}" VerticalAlignment="Top" Width="120"/>
        <TextBlock HorizontalAlignment="Left" Margin="10,172,0,0" TextWrapping="Wrap" Text="Параллельное основное заглавие" VerticalAlignment="Top" Width="108"/>
        <TextBox x:Name="tbAddBookParallelTitle" HorizontalAlignment="Left" Height="23" Margin="162,172,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.ParallelTitle}" VerticalAlignment="Top" Width="120"/>
        <TextBlock HorizontalAlignment="Left" Margin="10,221,0,0" TextWrapping="Wrap" Text="Язык параллельного основного заглавия" VerticalAlignment="Top" Width="118"/>
        <ComboBox x:Name="ParallelTitleLanguage" DisplayMemberPath=""  HorizontalAlignment="Left" Margin="162,221,0,0" VerticalAlignment="Top" Width="120">
            <ComboBoxItem>Азербайджанский</ComboBoxItem>
            <ComboBoxItem>Английский</ComboBoxItem>
            <ComboBoxItem>Арабский</ComboBoxItem>
            <ComboBoxItem>Армянский</ComboBoxItem>
            <ComboBoxItem>Башкирский</ComboBoxItem>
            <ComboBoxItem>Белорусский</ComboBoxItem>
            <ComboBoxItem>Болгарский</ComboBoxItem>
            <ComboBoxItem>Венгерский</ComboBoxItem>
            <ComboBoxItem>Вьетнамский</ComboBoxItem>
            <ComboBoxItem>Греческий</ComboBoxItem>
            <ComboBoxItem>Грузинский</ComboBoxItem>
            <ComboBoxItem>Датский</ComboBoxItem>
            <ComboBoxItem>Иврит</ComboBoxItem>
            <ComboBoxItem>Идиш</ComboBoxItem>
            <ComboBoxItem>Индийский</ComboBoxItem>
            <ComboBoxItem>Индоевропейские(другие)</ComboBoxItem>
            <ComboBoxItem>Иранские(другие)</ComboBoxItem>
            <ComboBoxItem>Испанский</ComboBoxItem>
            <ComboBoxItem>Итальянский</ComboBoxItem>
            <ComboBoxItem>Кавказские(другие)</ComboBoxItem>
            <ComboBoxItem>Казахский</ComboBoxItem>
            <ComboBoxItem>Карельский</ComboBoxItem>
            <ComboBoxItem>Каталанский</ComboBoxItem>
            <ComboBoxItem>Киргизский</ComboBoxItem>
            <ComboBoxItem>Китайский</ComboBoxItem>
            <ComboBoxItem>Корейский</ComboBoxItem>
            <ComboBoxItem>Курдский</ComboBoxItem>
            <ComboBoxItem>Латышский</ComboBoxItem>
            <ComboBoxItem>Литовский</ComboBoxItem>
            <ComboBoxItem>Молдавский</ComboBoxItem>
            <ComboBoxItem>Монгольский</ComboBoxItem>
            <ComboBoxItem>не определено</ComboBoxItem>
            <ComboBoxItem>Немецкий</ComboBoxItem>
            <ComboBoxItem>Нидерландский(голландский)</ComboBoxItem>
            <ComboBoxItem>Норвежский</ComboBoxItem>
            <ComboBoxItem>Польский</ComboBoxItem>
            <ComboBoxItem>Португальский</ComboBoxItem>
            <ComboBoxItem>Румынский</ComboBoxItem>
            <ComboBoxItem>Русский</ComboBoxItem>
            <ComboBoxItem>Сербский</ComboBoxItem>
            <ComboBoxItem>Сирийский</ComboBoxItem>
            <ComboBoxItem>Славянские(другие)</ComboBoxItem>
            <ComboBoxItem>Словацкий</ComboBoxItem>
            <ComboBoxItem>Словенский</ComboBoxItem>
            <ComboBoxItem>Тджикский</ComboBoxItem>
            <ComboBoxItem>Татарский</ComboBoxItem>
            <ComboBoxItem>Турецкий</ComboBoxItem>
            <ComboBoxItem>Туркменский</ComboBoxItem>
            <ComboBoxItem>Узбекский</ComboBoxItem>
            <ComboBoxItem>Украинский</ComboBoxItem>
            <ComboBoxItem>Финский</ComboBoxItem>
            <ComboBoxItem>Французский</ComboBoxItem>
            <ComboBoxItem>Церковно-славянский</ComboBoxItem>
            <ComboBoxItem>Цыганский</ComboBoxItem>
            <ComboBoxItem>Чешский</ComboBoxItem>
            <ComboBoxItem>Чувашский</ComboBoxItem>
            <ComboBoxItem>Шведский</ComboBoxItem>
            <ComboBoxItem>Эстонский</ComboBoxItem>
            <ComboBoxItem>Японский</ComboBoxItem>
            <ComboBoxItem>Многоязычная</ComboBoxItem>
        </ComboBox>
        <TextBlock HorizontalAlignment="Left" Margin="10,270,0,0" TextWrapping="Wrap" Text="Седения об ответственности" VerticalAlignment="Top" Width="118"/>
        <TextBox x:Name="tbaddBookStatementOfResponsibility" HorizontalAlignment="Left" Height="23" Margin="162,270,0,0" Text="{Binding Path=Book.StatementOfResponsibility}" TextWrapping="Wrap" VerticalAlignment="Top" Width="115"/>
        <TextBlock HorizontalAlignment="Left" Margin="13,311,0,0" TextWrapping="Wrap" Text="Место издания" VerticalAlignment="Top"/>
        <TextBox x:Name="tbAddBookPlaceOfPublication" HorizontalAlignment="Left" Height="23" Margin="162,301,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.PlaceOfPublication}" VerticalAlignment="Top" Width="115"/>
        <TextBlock HorizontalAlignment="Left" Margin="8,350,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="Издательство" />
        <TextBox x:Name="tbAddBookPublishingHouse" HorizontalAlignment="Left" Height="23" Margin="162,350,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.PublishingHouse}" VerticalAlignment="Top" Width="115"/>
        <TextBlock HorizontalAlignment="Left" Margin="10,398,0,0" TextWrapping="Wrap" Text="Год издания" VerticalAlignment="Top"/>
        <TextBox x:Name="tbAddBookPublicationDate" HorizontalAlignment="Left" Height="23" Margin="162,398,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.PublicationDate}" VerticalAlignment="Top" Width="115"/>
        <TextBlock HorizontalAlignment="Left" Margin="13,441,0,0" TextWrapping="Wrap" Text="Объем" VerticalAlignment="Top"/>
        <TextBox x:Name="tbAddBookSheet" HorizontalAlignment="Left" Height="23" Margin="162,441,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.Sheets}" VerticalAlignment="Top" Width="120"/>
        <TextBlock HorizontalAlignment="Left" Margin="13,481,0,0" TextWrapping="Wrap" Text="Серия" VerticalAlignment="Top"/>
        <TextBox x:Name="tbAddBookSeria" HorizontalAlignment="Left" Height="23" Margin="162,481,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="70"/>
        <TextBlock HorizontalAlignment="Left" Margin="8,668,0,0" TextWrapping="Wrap" Text="Дата создания записи" VerticalAlignment="Top" Width="123" Height="23"/>
        <TextBox x:Name="tbAddBookCreationDate" HorizontalAlignment="Left" Height="23" Margin="162,668,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.CreationDate}" VerticalAlignment="Top" Width="120"/>
        <TextBlock HorizontalAlignment="Left" Margin="9,710,0,0" TextWrapping="Wrap" Text="Дата изменения записи" VerticalAlignment="Top"/>
        <TextBox x:Name="tbAddBookDateChange" HorizontalAlignment="Left" Height="23" Margin="162,703,0,0" TextWrapping="Wrap" Text="{Binding Path=Book.DateOfChanging}" VerticalAlignment="Top" Width="120"/>
        <TextBlock HorizontalAlignment="Left" Margin="10,535,0,0" TextWrapping="Wrap" Text="Индекс УДК" VerticalAlignment="Top" Width="71"/>
        <TextBox x:Name="tbAddBookIndexUDC" HorizontalAlignment="Left" Height="23" Margin="162,535,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120"/>
        <TextBlock HorizontalAlignment="Left" Margin="8,592,0,0" TextWrapping="Wrap" Text="Предмет" VerticalAlignment="Top" Width="71"/>
        <TextBox x:Name="tbAddBookSubject" HorizontalAlignment="Left" Height="23" Margin="162,585,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="70"/>
        <TextBlock HorizontalAlignment="Left" Margin="14,49,0,0" TextWrapping="Wrap" Text="Язык документа" VerticalAlignment="Top"/>
        <ComboBox x:Name="LanguageOfDocument" HorizontalAlignment="Left" Margin="162,49,0,0" VerticalAlignment="Top" Width="120">
            <ComboBoxItem>Азербайджанский</ComboBoxItem>
            <ComboBoxItem>Английский</ComboBoxItem>
            <ComboBoxItem>Арабский</ComboBoxItem>
            <ComboBoxItem>Армянский</ComboBoxItem>
            <ComboBoxItem>Башкирский</ComboBoxItem>
            <ComboBoxItem>Белорусский</ComboBoxItem>
            <ComboBoxItem>Болгарский</ComboBoxItem>
            <ComboBoxItem>Венгерский</ComboBoxItem>
            <ComboBoxItem>Вьетнамский</ComboBoxItem>
            <ComboBoxItem>Греческий</ComboBoxItem>
            <ComboBoxItem>Грузинский</ComboBoxItem>
            <ComboBoxItem>Датский</ComboBoxItem>
            <ComboBoxItem>Иврит</ComboBoxItem>
            <ComboBoxItem>Идиш</ComboBoxItem>
            <ComboBoxItem>Индийский</ComboBoxItem>
            <ComboBoxItem>Индоевропейские(другие)</ComboBoxItem>
            <ComboBoxItem>Иранские(другие)</ComboBoxItem>
            <ComboBoxItem>Испанский</ComboBoxItem>
            <ComboBoxItem>Итальянский</ComboBoxItem>
            <ComboBoxItem>Кавказские(другие)</ComboBoxItem>
            <ComboBoxItem>Казахский</ComboBoxItem>
            <ComboBoxItem>Карельский</ComboBoxItem>
            <ComboBoxItem>Каталанский</ComboBoxItem>
            <ComboBoxItem>Киргизский</ComboBoxItem>
            <ComboBoxItem>Китайский</ComboBoxItem>
            <ComboBoxItem>Корейский</ComboBoxItem>
            <ComboBoxItem>Курдский</ComboBoxItem>
            <ComboBoxItem>Латышский</ComboBoxItem>
            <ComboBoxItem>Литовский</ComboBoxItem>
            <ComboBoxItem>Молдавский</ComboBoxItem>
            <ComboBoxItem>Монгольский</ComboBoxItem>
            <ComboBoxItem>не определено</ComboBoxItem>
            <ComboBoxItem>Немецкий</ComboBoxItem>
            <ComboBoxItem>Нидерландский(голландский)</ComboBoxItem>
            <ComboBoxItem>Норвежский</ComboBoxItem>
            <ComboBoxItem>Польский</ComboBoxItem>
            <ComboBoxItem>Португальский</ComboBoxItem>
            <ComboBoxItem>Румынский</ComboBoxItem>
            <ComboBoxItem>Русский</ComboBoxItem>
            <ComboBoxItem>Сербский</ComboBoxItem>
            <ComboBoxItem>Сирийский</ComboBoxItem>
            <ComboBoxItem>Славянские(другие)</ComboBoxItem>
            <ComboBoxItem>Словацкий</ComboBoxItem>
            <ComboBoxItem>Словенский</ComboBoxItem>
            <ComboBoxItem>Тджикский</ComboBoxItem>
            <ComboBoxItem>Татарский</ComboBoxItem>
            <ComboBoxItem>Турецкий</ComboBoxItem>
            <ComboBoxItem>Туркменский</ComboBoxItem>
            <ComboBoxItem>Узбекский</ComboBoxItem>
            <ComboBoxItem>Украинский</ComboBoxItem>
            <ComboBoxItem>Финский</ComboBoxItem>
            <ComboBoxItem>Французский</ComboBoxItem>
            <ComboBoxItem>Церковно-славянский</ComboBoxItem>
            <ComboBoxItem>Цыганский</ComboBoxItem>
            <ComboBoxItem>Чешский</ComboBoxItem>
            <ComboBoxItem>Чувашский</ComboBoxItem>
            <ComboBoxItem>Шведский</ComboBoxItem>
            <ComboBoxItem>Эстонский</ComboBoxItem>
            <ComboBoxItem>Японский</ComboBoxItem>
            <ComboBoxItem>Многоязычная</ComboBoxItem>
        </ComboBox>
        <Button x:Name="BtnSave" Content="Сохранить" HorizontalAlignment="Left" Margin="10,739,0,0" VerticalAlignment="Top" Width="75" Click="Save_Click"/>
        <Button x:Name="BtnCancel" Content="Отмена" HorizontalAlignment="Left" Margin="162,739,0,0" VerticalAlignment="Top" Width="75" Click="Cancel_Click"/>
        <Button Content="..." HorizontalAlignment="Left" Margin="250,90,0,0" VerticalAlignment="Top" Width="27" Height="23"/>
        <Button Content="..." x:Name="BtnAddSeria" HorizontalAlignment="Left" Margin="250,481,0,0" VerticalAlignment="Top" Width="27" Height="23" Click="BtnAddSeria_Click"/>
        <Button Content="..." HorizontalAlignment="Left" Margin="250,585,0,0" VerticalAlignment="Top" Width="32" Height="23"/>
 
 
 
    </Grid>
</Window>
Обработчик:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
public partial class UpdateBook : Window
    {
        Book newBook = new Book();
        Book changeBook = new Book();
 
        #region Constructors
        public UpdateBook()
        {
            InitializeComponent();
        }
 
        public UpdateBook(Book book)
        {
            InitializeComponent();
            DataContext = book;
            changeBook = book;
        }
 
        #endregion
 
        private void Save_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (DataContext == null)
                    AddBook();
                else
                    ChangeBook(changeBook);
                MessageBox.Show("Данные сохранены.");
                this.Close();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка");
            }
        }
 
        private void Cancel_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
 
        private void AddBook()
        {
 
            newBook.InstanceNumber = tbAddBookInstanceNumber.Text;
            newBook.LanguageId = int.Parse(LanguageOfDocument.Text);
            newBook.AuthorId = int.Parse(tbAddBookAuthor.Text);
            newBook.BookTitle = tbAddBookTitle.Text;
            newBook.ParallelTitle = tbAddBookParallelTitle.Text;
            newBook.ParallelTitleLang = ParallelTitleLanguage.Text;
            newBook.StatementOfResponsibility = tbaddBookStatementOfResponsibility.Text;
            newBook.PlaceOfPublication = tbAddBookPlaceOfPublication.Text;
            newBook.PublishingHouse = tbAddBookPublishingHouse.Text;
            newBook.PublicationDate = int.Parse(tbAddBookPublicationDate.Text);
            newBook.Sheets = tbAddBookSheet.Text;
            newBook.SeriaId = int.Parse(tbAddBookSeria.Text);
            newBook.IndexUDC = tbAddBookIndexUDC.Text;
            newBook.SubjectId = int.Parse(tbAddBookSubject.Text);
            newBook.DateOfChanging = tbAddBookDateChange.Text;
 
 
 
            using (var repo = new BookRepository()) { repo.Add(newBook); }
        }
 
        private void ChangeBook(Book book)
        {
            book.InstanceNumber = tbAddBookInstanceNumber.Text;
            book.LanguageId = int.Parse (LanguageOfDocument.Text);
            book.AuthorId = int.Parse (tbAddBookAuthor.Text);
            book.BookTitle = tbAddBookTitle.Text;
            book.ParallelTitle = tbAddBookParallelTitle.Text;
            book.ParallelTitleLang = ParallelTitleLanguage.Text;
            book.StatementOfResponsibility = tbaddBookStatementOfResponsibility.Text;
            book.PlaceOfPublication = tbAddBookPlaceOfPublication.Text;
            book.PublishingHouse = tbAddBookPublishingHouse.Text;
            book.PublicationDate = int.Parse(tbAddBookPublicationDate.Text);
            book.Sheets = tbAddBookSheet.Text;
            book.SeriaId = int.Parse(tbAddBookSeria.Text);
            book.IndexUDC = tbAddBookIndexUDC.Text;
            book.SubjectId = int.Parse (tbAddBookSubject.Text);
            book.DateOfChanging = tbAddBookDateChange.Text;
 
 
            using (var repo = new BookRepository()) { repo.Save(book); }
        }
 
        private void ParallelTitleLanguage_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
 
        }
 
        private void BtnAddSeria_Click(object sender, RoutedEventArgs e)
        {
            SetSeria setSeria = new SetSeria();
            setSeria.Show();
        }
    }
Окно для выбора серии:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Window x:Class="VerlibrDiplom.Views.ChangeViews.SubWindows.SetSeria"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:VerlibrDiplom.Views.ChangeViews.SubWindows"
        mc:Ignorable="d"
        Title="Установка серии" x:Name="SetSeriaWindow" Height="300" Width="200">
    <Grid Background="Lavender">
        <Button x:Name="BtnSeriaSet" Content="Установить" HorizontalAlignment="Left" Margin="10,239,0,0" VerticalAlignment="Top" Width="69"/>
        <Button x:Name="BtnCancel" Content="Отменить" HorizontalAlignment="Left" Margin="92,239,0,0" VerticalAlignment="Top" Width="75" Click="BtnCancel_Click"/>
        <ListBox x:Name="SetSeriaListBox" HorizontalAlignment="Left" Height="212" Margin="10,10,0,0" VerticalAlignment="Top" Width="160"/>
 
 
 
    </Grid>
</Window>
Обработчик к этому окну:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    /// <summary>
    /// Логика взаимодействия для SetSeria.xaml
    /// </summary>
    public partial class SetSeria : Window
    {
        public SetSeria()
        {
            Database.SetInitializer(new DataInitializer());
            InitializeComponent();
            UpdateSerias();
        }
 
        private void UpdateSerias()
        {
            SetSeriaListBox.Items.Clear();
            using (var repo = new SeriaRepository())
                foreach (Seria seria in repo.GetAll())
                    SetSeriaListBox.Items.Add(seria);
        }
        private void BtnCancel_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
 
        private void SeriaListBox_SourceUpdated(object sender, System.Windows.Data.DataTransferEventArgs e)
        {
 
        }
    }
И ещё такой момент: когда открываю окно setSeria там выводятся не названия серий, а какие-то значения,наподобии ключей-как сделать так, чтобы отображались именно названия серий? Буду очень благодарна за помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.09.2018, 15:48
Ответы с готовыми решениями:

Отображение серии изображений из папки
Как с помощью кнопки Button1 сделать так, что бы при нажатии на кнопку каждый раз фото менялось на новое void __fastcall...

Отображение названия программ
Возможно ли сделать такое, как отображение названия &quot;Title&quot; программы в метке или других объектах используемых в WinForm и WPF. Конечно в...

Отображение названия страницы в выдаче
Здравствуйте. Подскажите, каким образом сделать так, чтобы в выдаче, после указания домена отображалось более читабельное название...

64
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 20:06  [ТС]
Студворк — интернет-сервис помощи студентам
Элд Хасп, Указанного в классе модели. repo-репозиторий, то есть контроллер

Добавлено через 1 минуту
Элд Хасп, Каким классом оно выводит когда класс обращается к другому классу через связь один-ко-многим я не знаю.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 20:16
НУ, Вы же хотели в ListBox получить название серий. В каких свойствах возвращаемых объектов, содержится нужная информация?
Вот у Вас переменная цикла seria. Посмотрите в отладчике: какая в этом объекте информация? Какие свойства этого объекта? Какие методы и что они возвращают?
Вы же не от фонаря написали foreach (Seria seria in repo.GetAll()). Вы же когда это писали вытягивали из базы информацию по списку серий? Так где же эта информация?

Я не могу за Вас ответить на эти вопросы. Вы сами должны в этом разобраться.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 20:37  [ТС]
Элд Хасп, В Листбокс я уже получила названия серий с помощью DisplayMemberPath="TitleSeria". В TitleSeria названия серий как раз и хранятся.

Добавлено через 7 минут
Элд Хасп, Не знаю, поможет это или нет. Это интерфейс репозитория.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System.Collections.Generic;
using System.Threading.Tasks;
 
namespace VerlibrDiplom.DAL.Repository
{
    interface IRepository<T>
    {
        int Add(T entity);
        int AddRange(IList<T> entities);
        int Save(T entity);
        int Delete(int id, byte[] timeStamp);
        int Delete(T entity);
        T GetOne(int? id);
        List<T> GetAll();
    
 
        //Позволяют передавать строковый запрос SQL. Выполнение этих методов приведет
        // к загрузке (и отслеживанию) сущностей в объект DbSet<T> контекста
        List<T> ExecuteQuery(string sql);
        List<T> ExecuteQuery(string sql, object[] sqlParametersObjects);
    }
}
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 20:48
Цитата Сообщение от LitleLady Посмотреть сообщение
В Листбокс я уже получила названия серий с помощью DisplayMemberPath="TitleSeria". В TitleSeria названия серий как раз и хранятся.
Вот это и надо было.
C#
1
_upBook.Seria = (Seria)SetSeriaListBox.SelectedItem.TitleSeria;
Если Вам достаточно этого свойства для идентификации Серии.

Потом покажите как Вы определили свойство Seria в классе UpdateBook.
Если Вам надо больше информации о серии, то можно сделать его класса Seria. И тогда присвоить ему всю информацию о серии.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 21:13  [ТС]
Элд Хасп,
"Ошибка CS1061 'object" не содержит определения для "TitleSeria" и не удалось найти метод расширения "TitleSeria", принимающий тип "object" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)."
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Потом покажите как Вы определили свойство Seria в классе UpdateBook.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 private void BtnAddSeria_Click(object sender, RoutedEventArgs e)
        {
            SetSeria setSeria = new SetSeria();
            setSeria.Transfer(this);
           
 
 
        }
        string _seria = "";
        public string Seria
        {   
             get => _seria;
            set
            {
                _seria = value;
                /* Блок команд реагирующих на изменение серии */
            }
        }
Не знаю,правда как прописывать на сохранение и надо ли вообще что-то прописывать. Прикладываю фрагмент кода, который именно на сохранение новой книги работает:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 private void Save_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (DataContext == null)
                    AddBook();
                else
                    ChangeBook(changeBook);
                MessageBox.Show("Данные сохранены.");
                this.Close();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка");
            }
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        private void AddBook()
        {
            newBook.InstanceNumber = tbAddBookInstanceNumber.Text;
            newBook.AuthorId = int.Parse(tbAddBookAuthor.Text);
            newBook.BookTitle = tbAddBookTitle.Text;
            newBook.ParallelTitle = tbAddBookParallelTitle.Text;
            newBook.StatementOfResponsibility = tbaddBookStatementOfResponsibility.Text;
            newBook.PlaceOfPublication = tbAddBookPlaceOfPublication.Text;
            newBook.PublishingHouse = tbAddBookPublishingHouse.Text;
            newBook.PublicationDate = int.Parse(tbAddBookPublicationDate.Text);
            newBook.Sheets = tbAddBookSheet.Text;
            newBook.IndexUDC = tbAddBookIndexUDC.Text;
            newBook.DateOfChanging = tbAddBookDateChange.Text;
 
            using (var repo = new BookRepository()) { repo.Add(newBook); }
        }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 21:35
Цитата Сообщение от LitleLady Посмотреть сообщение
"Ошибка CS1061 'object" не содержит определения для "TitleSeria" и не удалось найти метод расширения "TitleSeria", принимающий тип "object" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)."
Блин! Что же у Вас там за список! Ни как не пойму!

Попробуйте изменить класс свойства. Вместо
C#
1
2
3
4
5
6
7
8
9
        string _seria = "";
        public string Seria
        {   
             get => _seria;
            set
            {
                _seria = value;
                /* Блок команд реагирующих на изменение серии */
            }
Сделать
C#
1
2
3
4
5
6
7
8
9
        Seria  _seria = "";
        public Seria Seria
        {   
             get => _seria;
            set
            {
                _seria = value;
                /* Блок команд реагирующих на изменение серии */
            }
И присвоение оставить по старому
C#
1
_upBook.Seria = (Seria)SetSeriaListBox.SelectedItem
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 22:02  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Сделать
Ругается в районе кавычек "Ошибка CS0029 Не удается неявно преобразовать тип "string" в "VerlibrDiplom.Model.Seria"."
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 23:48
Цитата Сообщение от LitleLady Посмотреть сообщение
Ругается в районе кавычек "Ошибка CS0029 Не удается неявно преобразовать тип "string" в "VerlibrDiplom.Model.Seria"."
После долгих раздумий....
Возможно у Вас в ListBox уже string?
Тогда, надо вернуть обратно
C#
1
2
3
4
5
6
7
8
9
        string _seria = "";
        public string Seria
        {   
             get => _seria;
            set
            {
                _seria = value;
                /* Блок команд реагирующих на изменение серии */
            }
А присваивание попробовать так
C#
1
_upBook.Seria = SetSeriaListBox.SelectedItem;
или так
C#
1
_upBook.Seria = (string)SetSeriaListBox.SelectedItem;
или так
C#
1
_upBook.Seria = SetSeriaListBox.SelectedItem.ToString();
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
02.10.2018, 19:43  [ТС]
Элд Хасп, Помогло третье. Точнее, оно уже не ругается, но при отлпдке название серии не появляется в поле окна UpdateBook
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
02.10.2018, 19:53
А что у Вас сохраняется в свойстве _upBook.Seria - какое значение?
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
02.10.2018, 19:57  [ТС]
Элд Хасп, Буквенное. По крайней мере у меня все серии буквами прописаны и там выше string(строковое) ставили
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
02.10.2018, 20:00
Цитата Сообщение от LitleLady Посмотреть сообщение
Буквенное. По крайней мере у меня все серии буквами прописаны и там выше string(строковое) ставили
Я понял что буквенное (использовался же метод ToString), но какое именно? Что оно означаете? Название серии?
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
02.10.2018, 20:03  [ТС]
Элд Хасп, Да, название серии
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
02.10.2018, 20:14
Цитата Сообщение от LitleLady Посмотреть сообщение
отлпдке название серии не появляется в поле окна UpdateBook
Т.е. в отладчике, Вы проверили до места _upBook.Seria = SetSeriaListBox.SelectedItem.ToString();
и после этой строки в свойстве _upBook.Seria - нужное значение. Но потом когда Вы выходите обратно в окно UpdateBook, это значение из свойства (теперь оно будет this.Seria) пропадает?
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
02.10.2018, 20:18  [ТС]
Элд Хасп, я жму в окне UpdateBook на кнопочку рядом с текстбоксом, куда должна устанавливаться серия-появляется лкошко SetSeria, выбираю серию из списка, нажимаю на кнопку "Установить", окно закрывается, как и должно, но серия в текстбокс не попадает
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
02.10.2018, 20:37
Цитата Сообщение от LitleLady Посмотреть сообщение
окно закрывается, как и должно, но серия в текстбокс не попадает
Когда я Вам писал код свойства Seria, там было место /* Блок команд реагирующих на изменение серии */. Свойство у Вас сохранило значение, но Вы же не создали привязок в коде! Откуда текстбокс может узнать, что значение свойства изменилось? Сам он узнать этого не может. Поэтому Вам надо в этом месте записать самой в TextBox значение свойства. Что-то в таком духе:
C#
1
2
3
4
5
6
            set
            {
                _seria = value;
                /* Блок команд реагирующих на изменение серии */
                ИмяTextBox.Text = Seria;
            }
Так же в этом месте, можно добавить другие команды, для изменений вызванных выбором серии. Посмотрите мой маленький пример в проекте что я Вам скидывал.
Там выводятся названия серии, автор. И при их изменении меняется фильтр выдачи списка книг.
Такой же приём можете применить и у себя.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
02.10.2018, 21:06  [ТС]
Элд Хасп, Сработало, но оно вывело ключ, страшный такой. Но на этот раз дело не в привязке точно и, мне кажется, я знаю в чём дело, но не знаю как это поправить. В общем вот фрагмент кода, там оно привязано не к TitleSeria, а к SeriaId и стоит парсинг. Я пытаюсь переделать под TitleSeria, но оно тогда в этом фрагменте ругается на преобразование. Кстати точно также ругается, как ругалось выше, типо нельзя неявно преобразовать из одного типа в стринг
C#
1
2
3
4
5
6
private void AddBook() 
{
newBook. SeriaId = int.Parse(tbAddBookSeria.Text);
 
using (var repo=new BookRepository()) {repo.Add(newBook);} 
}
Я подозреваю что дело именно в строчке newBook. SeriaId = int.Parse(tbAddBookSeria.Text); и что там надо переставить на TitleSeria. Но когда я редактирую соответствующим образом оно ругается
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
02.10.2018, 21:22
Цитата Сообщение от LitleLady Посмотреть сообщение
но оно вывело ключ, страшный такой
Не пугайтесь так.... Оно Вас не съест.
Напишите точное значение этого значение этого ключа, может смогу по нему понять в чём проблема.
Ключ выводится в поле TextBox? Его можно оттуда просто скопировать.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
02.10.2018, 21:37  [ТС]
Элд Хасп, Да, выводится вместо названия установленной серии- в прошлый раз я решила эту проблему привязкой в xaml-файле, но тут-то она стоит....Вот такое вот выводит System.Data.Entity.DynamicProxies.Seria_ FBE87AC28395D26BC6278CEB03C04F55359BA312 DC5797E172E0E6854D0EF3B3
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
02.10.2018, 21:49
Цитата Сообщение от LitleLady Посмотреть сообщение
System.Data.Entity.DynamicProxies.Seria_ FBE87AC28395D26BC6278CEB03C04F55359BA312 DC5797E172E0E6854D0EF3B3
Блин! Это имя класса в котором сохранена серия!
Ёлки палки!
Попробуйте избавится от SQL сервера и мне выслать чтобы я запустить мог.

Добавлено через 31 секунду
Или удалённо как-то попробовать на Вашем компе?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2018, 21:49

Отображение названия следующего месяца
При формировании отчета (на основании запроса, в котором содержатся отсортированные по определенному месяцу даты) необходимо в отдельном...

Отображение названия файла с которым работаешь ?
Редактирую таблицу StringGrid - данные загружены через OpenDialog из текстового файла .txt Подскажите как реализовать - чтобы на Form1 ...

Как убрать отображение названия компонента?
Привет всем, у меня интересный вопрос: как сделать чтобы в диалогах об ошибках не писалось name кампонента, а только оставался текст...

Отображение названия и кода нажатой функциональной клавиши
Создать на форме Form3 поля Label1 i Label2 для отображения названия и кода нажатой функциональной клавиши. Если клавиша НЕ функциональная,...

Неполное отображение названия файла/папки. Windows XP.
В win xp после установки сторонней темы стали не полностью отображаться названия файлов/папок, например, вместо Игры пишется Иг..., вместо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru