Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109

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

28.09.2018, 15:48. Показов 2232. Ответов 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 / 2891
Регистрация: 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 / 2891
Регистрация: 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 / 2891
Регистрация: 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 / 2891
Регистрация: 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 / 2891
Регистрация: 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 / 2891
Регистрация: 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 / 2891
Регистрация: 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 / 2891
Регистрация: 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 / 2891
Регистрация: 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 / 2891
Регистрация: 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
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru