Рейтинг:
0
Maciej Los
Проверить это: wpfdatagrid - WPF DataGridTextColumn многострочный ввод - переполнение стека[^]
<DataGridTextColumn Header="Message" Binding="{Binding Path=Message}" Width="Auto">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="AcceptsReturn" Value="true" />
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
Arunkumar Murugesan
Привет Мацей,
Спасибо за ваше обновление. В вашем решении мы знаем имя столбца и можем легко установить стиль. Но в моем случае я буду загружать в сетку несколько табличных значений. Поэтому я не упомянул ни одного имени столбца в xaml. Я привязки объекта DataTable значения непосредственно в таблице. Он очень динамичный.
В данном случае, как я могу решить эту проблему?
Arunkumar Murugesan
Да, Мацей. Я с этим согласен. Но здесь у меня есть почти 200 таблиц, и я могу получить результат каждой таблицы из SQL и непосредственно привязать ее к сетке, не подготавливая никаких столбцов. В этом случае мы не можем использовать множественное представление, верно?
Поэтому в этом случае мне просто нужно принимать многострочный текст всякий раз, когда столбец datagrid редактируется.
Maciej Los
Я тебя не понимаю... Вы хотите редактировать табличные данные непосредственно в форме WPF? В WPF вы используете шаблон MVVM (Model-View-ViewModel) для "обслуживания" данных клиенту. Таким образом, если ваше приложение не реализует MVVM patten, это не имеет никакого смысла... Извиняюсь.
Arunkumar Murugesan
На самом деле то, что я сделал до сих пор, это,
1. Я перечислил таблицы в поле со списком. Мы получим результат из SQL на основе выбранных таблиц. Каждая таблица имеет минимум 20 столбцов.
2. В таком случае, я непосредственно привязки объекта DataTable в элементе управления DataGrid. Все это я реализовал только с помощью шаблона MVVM
3. Также я предоставил опцию редактирования значений ячеек. Мы можем дважды щелкнуть ячейку, чтобы вставить значения для обновления.
4. в этом случае я попытался вставить содержимое в ячейку сетки, как содержимое тела почты. Из этого содержимого первая строка значения вставляется только в ячейку сетки. Все содержимое будет вставлено в ячейку сетки. На самом деле это моя проблема.
Arunkumar Murugesan
Можете ли вы понять, что я пытаюсь здесь передать?
Arunkumar Murugesan
&ЛТ;элемент управления DataGrid
х:имя="autoBook_Datagrid"
="" horizontalscrollbarvisibility="Auto" verticalscrollbarvisibility="Auto" scrollviewer.cancontentscroll="True" borderbrush="{StaticResource GreenBrush}" horizontalalignment="Left" verticalalignment="Top" rowheight="25" gridlinesvisibility="All" clipboardcopymode="IncludeHeader" itemssource="{Binding DynamicBindingTable, UpdateSourceTrigger=PropertyChanged}" canuseraddrows="{Binding CanAddNewRows, UpdateSourceTrigger=PropertyChanged}" virtualizingpanel.virtualizationmode="Recycling" virtualizingpanel.scrollunit="Pixel" enablecolumnvirtualization="True" enablerowvirtualization="True" focusvisualstyle="{StaticResource ButtonFocusVisual}" canuserdeleterows="False">
в этом коде, как я мог бы добавить текстовое поле под datagrid? Я начинаю путаться. Можете ли вы увидеть какой-то код, как то, что вы сказали pls.
Maciej Los
См. обновленный комментарий.
Arunkumar Murugesan
&ЛТ;DataGrid с autogeneratecolumns="false" - в Х:имя="мастер" canuseraddrows="ложных" canuserdeleterows="истинный" сетки.строка="1"
="" что ItemsSource="{привязки клиентов}" для selecteditem="{привязки SelectedCustomer, режим=с двусторонним движением}"&ГТ;
&ЛТ;элемент управления DataGrid.колонны&ГТ;
&ЛТ;datagridtextcolumn х:имя="customerIDColumn" привязки="{путь привязки=Кодклиента}" заголовок="ID клиента" ширина="80"и GT;
&ЛТ;datagridtextcolumn х:имя="companyNameColumn" привязки="{путь привязки= "название", ValidatesOnDataErrors=правда}" заголовок="название компании" ширина="300"&ГТ;
&ЛТ;datagridtextcolumn х:имя="cityColumn" привязки="{путь привязки=город}" заголовок="город" ширина="100"&ГТ;
&ЛТ;datagridtextcolumn х:имя="countryColumn" привязки="{путь привязки=страна}" заголовок="кантри" ширина="100"&ГТ;
В своем коде вы определили столбец, который должен отображаться в сетке. В этом случае мы можем легко добавить "Accepteturs = True" для принятия многострочного текста в ячейке, как показано ниже,
DataGridTemplateColumn.CellEditingTemplate>
<datatemplate>
&ЛТ;текстовое поле текст="{путь привязки= "название", режим=с двусторонним движением}" acceptreturs="истинный" TextWrapping значение="обернуть"и GT;
Но в моем случае я не могу определить имена столбцов, так как это динамические таблицы. Я думаю, что это проще. Но мой разум где-то застрял.
Arunkumar Murugesan
Проверю этого Мацея. Спасибо.