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

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

28.09.2018, 15:48. Показов 2228. Ответов 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
28.09.2018, 22:36  [ТС]
Студворк — интернет-сервис помощи студентам
Элд Хасп, Посмотрите, пожалуйста, лс.

Добавлено через 5 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Сбросьте весь проект, включая базу.
Прямо сюда-не могу-даже архивом весит больше лимита в 20 мб.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
28.09.2018, 22:46
Цитата Сообщение от LitleLady Посмотреть сообщение
И ещё такой момент: когда открываю окно setSeria там выводятся не названия серий, а какие-то значения,наподобии ключей-как сделать так, чтобы отображались именно названия серий? Буду очень благодарна за помощь.
Это именно ошибки связанные или не с верным типом (классом) элементов подключенного списка, или из-за отсутствия переопределения ToString
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
28.09.2018, 23:18  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Важные моменты:
Какой тип списка возвращает GetAll(): List, Array, ObservableCollection?
Какой тип элементов в этой коллекции : int, string, кастомный класс.
Если кастомный класс, то какие у него публичные свойства и как переопределён его метод ToString()?
Ответы на эти вопросы нужны, для того что бы правильно подключить этот список к ListBox и правильно получить оттуда результат.
Тип списка возвращает вроде List
Тип элементов: Book- string, int и типы, к которым бегут связи(последнее делала по примеру, где-то тут на форуме и видела)
Seria- int, string.
И в обоих классах ещё byte
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 00:32
Я не могу проверить Ваше решение - оно не запускается у меня.
Вы с ним работали?
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 00:35  [ТС]
Элд Хасп, Да, конечно. Microsoft visual studio 2017, бд на основе Entity Framework
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 00:36
Блин! Уже не соображаю. У Вас же там SQL сервер! У меня не установлен.
Если простой пример сделаю, как надо заполнять источники - дальше разберётесь?
Неохота возиться с SQL.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 00:43  [ТС]
Элд Хасп, вообще я, насколько я помню, sql-серверную базу отцепляла так как в неё всё равно ничего не грузилось. Там осталась только на основе EF, но она с sql не связана. Хотя тут я могу и ошибаться.

Добавлено через 1 минуту
Элд Хасп, Ну, давайте попробуем
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 00:46
Цитата Сообщение от LitleLady Посмотреть сообщение
вообще я, насколько я помню, sql-серверную базу отцепляла....
Ошибка:
"При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что на SQL Server разрешены удаленные соединения ...."

Добавлено через 38 секунд
Цитата Сообщение от LitleLady Посмотреть сообщение
Ну, давайте попробуем
Токо уже завтра - сейчас уже всё вырубаюсь...
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 04:20  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Токо уже завтра - сейчас уже всё вырубаюсь...
Да-да,конечно
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 15:05
Посмотрите маленький проект. Если что непонятно - пишите.
Вложения
Тип файла: zip Отображение названия серии (WPF).zip (90.6 Кб, 2 просмотров)
1
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 17:38  [ТС]
Элд Хасп, Посмотрела и адаптировала. Сижу пытаюсь понять как сделать преобразование из типа "Seria" в тип "string"-ругается,что не удаётся сделать неявное преобразование
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 17:56
Цитата Сообщение от LitleLady Посмотреть сообщение
Элд Хасп, Посмотрела и адаптировала. Сижу пытаюсь понять как сделать преобразование из типа "Seria" в тип "string"-ругается,что не удаётся сделать неявное преобразование
Вы видели как организовано у меня переопределение ToString() ? Смысл понятен?
Класс Seria имеет несколько свойств, полей, выберите из них какие Вам нужно видеть в string и соберите из них строку.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 18:11  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вы видели как организовано у меня переопределение ToString() ? Смысл понятен?
Класс Seria имеет несколько свойств, полей, выберите из них какие Вам нужно видеть в string и соберите из них строку.
Смысл уловила, но всё равно ставит в тупик построение строки потому как класс Seria у меня используется к классе Book и это сбивает с толку. Вот фрагменты кода с свойствами эти классов:

Seria.cs
C#
1
2
  public string TitleSeria { get; set; }
        public string AboutSeria { get; set; }
Book.cs (только фрагмент свойств покажу, чтобы не сбивать с толку-или стоило все свойства показать?)
C#
1
2
3
4
5
 public int AuthorId { get; set; }
        public Author NameShort { get; set; } public string Sheets { get; set; }
        public int SeriaId { get; set; }
        public Seria TitleSeria { get; set; }
        public string IndexUDC { get; set; }
Как видно из фрагмента класса Book оно как бы обращается к классу Seria и Seria, если я верно поняла, становится типом (ИмяПроекта.Model.Seria). Это и сбивает с толку-не понимаю как прописать преобразование в string
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 18:32
Seria у Вас класс , так же как и в моём проекте.
Проясните другое. Где Вам требуется преобразование Seria в strig? Для чего оно?
От этого и зависит, как надо преобразовывать.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 18:42  [ТС]
Элд Хасп, В обработчике кнопки в SetSeria
C#
1
2
3
4
5
6
        private void BtnSeriaSet_Click(object sender, RoutedEventArgs e)
        {
             _upBook.Seria = (Seria)SetSeriaListBox.SelectedItem[0];
             Close();
 
        }
Вот так пишет "Не удаётся применить индексирование через [] к объекту типа object"

Поставила эксперимент и попробовала написать так:
C#
1
2
3
4
5
6
        private void BtnSeriaSet_Click(object sender, RoutedEventArgs e)
        {
             _upBook.Seria = (Seria)SetSeriaListBox.SelectedItem;
             Close();
 
        }
Пишет "Не удаётся неявно преобразовать тип "VerlibrDiplom.Model.Seria" в "string""
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 19:07
Цитата Сообщение от LitleLady Посмотреть сообщение
В обработчике кнопки в SetSeria
_upBook.Seria у вас должен быть класса Seria. Ни какого преобразования здесь не должно быть.
Вы взяли это из разных кусков. Когда я Вам писал первоначально, там была друга связка.
Посмотрите этот момент в моём проекте.
Цитата Сообщение от LitleLady Посмотреть сообщение
Поставила эксперимент и попробовала написать так:
SelectedItem - возвращает СПИСОК всех выделенных элементов, так как в ListBox есть такая возможность. Нам нужен только первый элемент из этого списка, а не весь список.
Возможно если отключить SelectionMode="Multiple" там будет только один элемент. Надо проверить.

Добавлено через 5 минут
Я немного запутался. У меня в коде стоит .SelectedItems[0], а не как у Вас .SelectedItem[0].
Так как Вы сделали во втором примере (Seria)SetSeriaListBox.SelectedItem тоже можно.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 19:44  [ТС]
Элд Хасп, Всё, что содержится в аналогичном файле Вашего проекта-в том или ином виде у меня прописано. Я не понимаю, как тут без преобразования. Вот код моего файла:
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
using VerlibrDiplom.Model;
using System.Data.Entity;
using System.Windows.Controls;
using VerlibrDiplom.DAL.EF;
using VerlibrDiplom.DAL.Repository;
using VerlibrDiplom.Views.ChangeViews;
using System.Windows;
 
namespace VerlibrDiplom.Views.ChangeViews.SubWindows
{
    /// <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 BtnSeriaSet_Click(object sender, RoutedEventArgs e)
        {
             _upBook.Seria = (Seria)SetSeriaListBox.SelectedItem;
             Close();
 
        }
         private UpdateBook _upBook; //поле для запоминания ссылки на первое окно
        public void Transfer(UpdateBook updateBook)
        {
            _upBook = updateBook;
            Show();
        }
 
        private void SetSeriaListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (SetSeriaListBox.SelectedIndex < 0) BtnSeriaSet.IsEnabled = false;
            else BtnSeriaSet.IsEnabled = true;
        }
    }
}
Конкретно этот фрагмент-аналог Вашего public List<SeriaClass> SeriasItems => DataBase.Serias();
C#
1
2
3
4
             SetSeriaListBox.Items.Clear();
            using (var repo = new SeriaRepository())
            foreach (Seria seria in repo.GetAll())
            SetSeriaListBox.Items.Add(seria);
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 20:00
Цитата Сообщение от LitleLady Посмотреть сообщение
Конкретно этот фрагмент-аналог Вашего public List<SeriaClass> SeriasItems => DataBase.Serias();
Вот в этом и разница! У меня список ListBox заполняется объектами класса Seria.
Этого же типа (класса) и свойство _upBook.Seria. Поэтому без проблем идёт присваивание.
У Вас же ListBox заполняется из repo.GetAll(). А какого класса объектами этот список заполнен?
Я не смог запустить, что бы посмотреть в отладчике. Вы посмотрите сами. Вот в этом цикле foreach (Seria seria in repo.GetAll()) переменная цикла seria какого класса?

Добавлено через 3 минуты
И после отладки, как закончим, обязательно измените источник ListBox! Так как Вы его заполняете SetSeriaListBox.Items.Add(seria); - никуда не годится!
ListBox - должен быть привязан к свойству. И работать потом надо с этим свойством.

Добавлено через 1 минуту
Цитата Сообщение от LitleLady Посмотреть сообщение
преобразование из типа "Seria" в тип "string"-ругается,что не удаётся сделать неявное преобразование
Скопируйте текст ошибки сюда, может в нём будут данные о классе.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 109
29.09.2018, 20:00  [ТС]
Элд Хасп, Отдельно спецификацию для этого я не писала, а базовое извлечение: public List<T> GetAll() => Table.ToList(); .
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
29.09.2018, 20:01
Цитата Сообщение от LitleLady Посмотреть сообщение
Отдельно спецификацию для этого я не писала, а базовое извлечение: public List<T> GetAll() => Table.ToList();
Это я понимаю. Но реально там же объекты определённого класса. Какого?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.09.2018, 20:01

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера 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