Я работаю над проектом C#, где у меня есть DataGrid, содержащий объекты: Изображение DataGrid
Моя основная цель здесь состоит в том, чтобы Пользователь мог выбирать только тип объекта одна "КУПИТЬ". (Множественный выбор конечно верно) Если он попытается выбрать другой, ничего не изменится, выбор останется прежним. Однако он может выбрать любое количество объектов типа "ПРОДАВАТЬ".
Но мой код, похоже, не работает, как я могу решить эту проблему?
КОД:
<DataGrid Name = "TransactionTableXAML" AutoGenerateColumns = "False" ItemsSource = "{Binding Path=tableAttributes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectionChanged = "TransactionTableXAML_SelectionChanged"/>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public bool boughtSelected = false;
public int currentBoughtIndex;
private void TransactionTableXAML_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
boughtSelected = false;
if (TransactionTableXAML.SelectedItem!=null)
{
var itemsSource = TransactionTableXAML.ItemsSource as IEnumerable;
if (itemsSource != null)
{
foreach (var item in itemsSource)
{
var dataGridRow = TransactionTableXAML.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
var stock = (MyObject)item;
if (boughtSelected == false)
{
if (stock.getTransactionType() == "BUY")
{
currentBoughtIndex = dataGridRow.GetIndex();
}
}
else if (boughtSelected==true && stock.getTransactionType()= = "BUY" && currentBoughtIndex!=dataGridRow.GetIndex())
{
dataGridRow.IsSelected = false;
}
}
}
}
}
}
Лично я бы коллекцию стоковую связал. Привязка выбирается к имеющейся собственности или к любому другому элементу. Я бы передал ссылку на родительскую модель просмотра, чтобы каждый мог получить доступ к коллекции, в которой он находится. Когда isselected изменяет запас, который является BUY, я бы использовал строку linq, чтобы установить для других акций значение false.
В основном мой код не работает, и я хотел бы решить эту проблему.
Как вы относитесь к подходу, который я описал выше? Получение объектов из сетки данных - тяжелая работа, работать с базовыми данными намного проще.
Подсказка - SelectionChangedEventArgs имеет свойство Handled





У вас возник вопрос?