Такая проблема: необходимо осуществить поиск по выделенному тексту, допустим, пользователь выделяет часть текста в ячейке и необходимо вывести только те записи, в которых присутствует эта часть текста (точнее в столбце, где и выделялась часть текста). Data grid хранит простенькие объекты с 5 полями. Всё столбцы типа textcolumn.
Даже не знаю как получить выделенный текст из ячейки
Получить выделенный текст из ячейки можно, например, следующим образом: подпишитесь на PreparingCellForEdit
, и там:
private void OnPreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e)
{
if (e.EditingElement is TextBox textBox)
{
textBox.SelectionChanged += OnSelectionChanged;
}
}
В CellEditEnding
надо отписать от события:
private void OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
if (e.EditingElement is TextBox textBox)
{
textBox.SelectionChanged -= OnSelectionChanged;
}
}
Здесь OnSelectionChanged
— метод:
private void OnSelectionChanged(object sender, RoutedEventArgs e)
{
var textBox = (TextBox)sender;
PatternTextBox.Text = textBox.SelectedText;
}
Разметка:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="PatternTextBox"
Text="{Binding Pattern, UpdateSourceTrigger=PropertyChanged}"/>
<Button Grid.Column="1" Content="Search"
Command="{Binding SearchCommand}"/>
<DataGrid x:Name="MyDataGrid" Grid.Row="1" Grid.ColumnSpan="2"
ItemsSource="{Binding Items}"
PreparingCellForEdit="OnPreparingCellForEdit"
CellEditEnding="OnCellEditEnding"/>
</Grid>
Фильтрацию коллекции Items
реализуете в команде SearchCommand
по тексту в свойстве Pattern
в вашей VM.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
я хочу удалить данные выбранные с CheckBox'омДанные находяться в GridView
Есть ли разница между использованием одного массива и множеством переменных для хранения данных? Или тут кому как удобнее?
Нужно выявить сумму всех авто (price), ответ всегда выводится 50
Имеется функция, которой на вход поступает объект класса FileStreamНеобходимо узнать его расширение (png,txt,bmp или другое)