и таблица уже сама готова... определены поля, заполнены записи...
в принципе уже с этим можно работать... но если нужно приложению придать более дружелюбный вид, то можно внести несколько изменений...
Свой набор полей(Заголовки)
Если при использовании DataGrid, у нас определен класс, которым будет заполняться таблица. можно указать только те поля которые мы будем использовать.
пусть у нас есть класс
PiketList, с полями (ID(int),FROM(string),TO(string),IsPiket(bool),x(double),y(double),z(double) )
Используя механизм Binding можно указать поля которые хотим вывести, для логического типа красивее использовать data:DataGridCheckBoxColumn
<data:DataGrid Grid.Row="1" Name="dataGridPkt" AutoGenerateColumns="False" > <data:DataGrid.Columns> <data:DataGridTextColumn Binding="{Binding ID}" Header="№"/> <data:DataGridTextColumn Binding="{Binding FROM}" Header="От"/> <data:DataGridTextColumn Binding="{Binding TO}" Header="До"/> <!-- флажок --> <data:DataGridCheckBoxColumn Binding="{Binding IsPiket}" Header="Пикет"/> </data:DataGrid.Columns> </data:DataGrid>теперь при использовании команды
dataGridPkt.ItemsSource = PrjProperty.CurrentPiketList;
будут заполнены указанные поля
Создание кнопки в поле.
для удаления записи можно описать кнопку в поле, и для каждой записи будет своя кнопочка
описание кнопки выглядит так
<data:DataGridTemplateColumn> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button x:Name="btnDelete" Content="Удл" Foreground="DarkBlue" Click="btnDelete_Click" > <!-- Всплывающая подсказка --> <ToolTipService.ToolTip> <ToolTip> <TextBlock Text="Удалить строчку" /> </ToolTip> </ToolTipService.ToolTip> </Button> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn>для обработки события нажатия на кнопку удаления
создадим окно на подтверждение
для этого добавим новый элемент в наш проект "Дочернее окно Silverligth" - ConfimDeleteRecord
в режиме кода
public partial class ConfimDeleteRecord : ChildWindow { int index = 0; /// <summary> /// Конструктор окна подтверждения /// </summary> /// <param name="wtlt">Заголовок</param> /// <param name="msg">Сообщение</param> /// <param name="idx">номер </param> public ConfimDeleteRecord(string wtlt, string msg, int idx) { InitializeComponent(); index = idx; this.Title = wtlt; this.Message.Text = msg; } private void OKButton_Click(object sender, RoutedEventArgs e) { PrjProperty.CurrentPiketList.RemoveAt(index); this.DialogResult = true; } private void CancelButton_Click(object sender, RoutedEventArgs e) { this.DialogResult = false; } }
в нашей странице теперь вызовем окно и создадим обработчик событий
#region ConfimDeleteRecord_Closed -- Событие закрытия окна Удаления private void ConfimDeleteRecord_Closed(object sender, EventArgs e) { var result = ((ChildWindow)sender).DialogResult; if (result.HasValue) { //результат нажатия кнопки OK/Cancel у нас в result.Value if (result.Value == true) { textBlockStatus.Text = "Запись удалена"; refreshTable(); } } } #endregion ConfimDeleteRecord_Closed #region btnDelete_Click -- Удалить запись private void btnDelete_Click(object sender, RoutedEventArgs e) { int i = dataGridPkt.SelectedIndex; ConfimDeleteRecord del = new ConfimDeleteRecord("Удаление записи...", "Вы действительно желаете удалить запись № " + i, i); del.Closed += new EventHandler(ConfimDeleteRecord_Closed); del.Show(); } #endregion btnDelete_Click
Awesome article. It is so detailed and well formatted that i enjoyed reading it as well as get some new information too.
ОтветитьУдалитьSAP HR training in Chennai
Этот комментарий был удален автором.
ОтветитьУдалить