@Alex45G

С# wpf dataGrid comboBox — почему при выборе варианта приписывается тип и при вводе данных они не записываются?

Здравствуйте!
Я новичок в c# wpf. Пишу первое своё приложение и прошу помощи.
Я сделал клиентское приложение, которое обращается к базе данных и отображает её содержимое в dataGrid для дальнейшего редактирования.
796ca6d722d84d73b5624a87f1da3f02.PNG

При этом возникло 2 проблемы:

1) При выборе статуса (в comboBox), в ячейке отображается помимо самого статуса ещё и тип:
"System.Windows.Controls.ComboBoxItem: В работу" вместо "В работу".
Описание ComboBox'a: (это в ресурсах)
<DataTemplate x:Key="StatusTemplate" >
            <TextBlock Text="{Binding Path=status, ConverterParameter=DefaultToString}"/>
</DataTemplate>
<DataTemplate x:Key="EditingStatusTemplate">
            <ComboBox SelectedItem="{Binding Path=status, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DropDownOpened="ComboBox_DropDownOpened">
                <ComboBoxItem Content="Черновик" IsEnabled="True"/>
                <ComboBoxItem Content="В работу" IsEnabled="True"/>
                <ComboBoxItem Content="В работе" IsEnabled="True"/>
                <ComboBoxItem Content="Остановлен" IsEnabled="True"/>
                <ComboBoxItem Content="Завершен" IsEnabled="True"/>
                <ComboBoxItem Content="Завершен по N2" IsEnabled="True"/>
            </ComboBox>
</DataTemplate>

в DataGrid.Columns
<DataGridTemplateColumn Header="Статус" CanUserResize="False" CellTemplate="{StaticResource StatusTemplate}" CellEditingTemplate="{StaticResource EditingStatusTemplate}"/>


2) при вводе данных в колонки типа DataGridTextColumn и DataGridComboBoxColumn в dataGrid'e в строке, в которую добавлял данное, оно не отображается при отладке. А я хочу проверять, заполнены ли все ячейки в строке и если да, то разрешать редактирование статуса.
Пример описания колонок:
<DataGridTextColumn Binding="{Binding Path=progress}" ClipboardContentBinding="{x:Null}" Header="Прогресс" CanUserResize="False"/>


Пытался проверять содержимое dataGrid в обработчике при помощи отладчика:
private void dataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
            DataGrid dg = dataGrid;
}


А в обработчике:
private void dataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)

проверяю заполнены ли все остальные ячейки кроме статуса и если да - разрешаю его редактировать.

Заранее спасибо!
  • Вопрос задан
  • 339 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы