Я пытаюсь использовать сетку данных, привязанную к коллекции объектов с двумя параметрами.Сетка данных должна позволять мне вставлять новые строки, тем самым создавать новые объекты.
Первый столбец, связанный с первым параметром, является текстовым столбцом.Вторым должен быть столбец шаблона, содержащий радиокнопку, которая использует конвертер BoolToInt (не имеет значения) для установки значения для второго свойства.
При отображении уже существующих строк в сетке также отображаютсяпустая строка, используемая для вставки нового объекта.Таким образом, у нас есть две возможности вставки нового объекта в список / сетку: 1. Сначала мы набираем что-то в текстовом столбце, а затем проверяем радиокнопку. 2. Сначала мы проверяем радиокнопку, а затем вводим что-то в текстовый столбец *.1005 *
Первый вариант, работает просто отлично.Второй не делает: когда я проверяю радио-кнопку, а затем иду и набираю что-то в столбце текста, радио-кнопка просто отключается.На самом деле он исчезает, потому что, когда я начинаю печатать текст, в сетке создается новая строка с новой радиокнопкой.Первый, который я проверил, - это тот, что в пустой строке, позволяющий мне добавлять новые строки, и он продолжает идти в конец списка всякий раз, когда я вставляю новую строку.
Я думаю, что это должно быть решено принудительносетка для создания новой строки при проверке радиокнопки, точно так же, как при вводе в текстовом столбце.
Это сетка данных:
<DataGrid ItemsSource="{Binding Path=Rows}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=param1, TargetNullValue=''}">
</DataGridTextColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton VerticalAlignment="Center" IsChecked="{Binding Path=param2, Converter={StaticResource RPLBoolToIntConverter}, ConverterParameter=1}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
И это код позади,создание некоторых объектов для отображения:
CPL cpl = new CPL();
cpl.Rows = new List<CPLRow>()
{
new CPLRow(){ param1=80001, param2=20304},
new CPLRow(){ param1=80002, param2=20304},
new CPLRow(){ param1=80003, param2=20304}
};
DataContext = cpl;
Есть ли способ заставить его реагировать на проверку радиокнопки.Я имею в виду пример, в котором я хотел бы просто использовать радиокнопки, и всякий раз, когда я отмечаю их, создается новая строка, в то же время правильно привязанная к коллекции.
Заранее спасибо!