У меня есть WPF Took Kit DataGrid с флажком.Пользователь должен иметь возможность проверять или снимать отметку с одного клика.Но у меня возникает следующая проблема с поведением мыши.
При первом щелчке мышью он выбирает всю строку, а при последующих щелчках - устанавливает или снимает флажок.
Теперь, как мне избежать поведения при первом щелчке мыши, чтобы пользователю не приходилось нажимать несколько раз?
Я бы предпочел DataGrid с флажком без стороннего инструмента, такого как WPF Tool Kit.Буду признателен, если кто-нибудь предоставит мне URL для примера кода без набора инструментов WPF.
TasklistView.xaml
<UserControl x:Class="MyProject.TasklistView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="742" Width="1024" >
<Grid>
<toolkit:DataGrid x:Name="dgMyTaskList"
SelectionMode="Single"
ItemsSource="{Binding Path=MyTaskList}"
AutoGenerateColumns="False"
SelectedItem="{Binding Path=SelectedTaskItem,
UpdateSourceTrigger=PropertyChanged}" >
<toolkit:DataGrid.Columns>
<toolkit:DataGridCheckBoxColumn
Header="Select"
Binding="{Binding Path=IsSelected}" />
<toolkit:DataGridTextColumn
Header="Task ID"
Width="100"
Binding="{Binding TaskID}"
IsReadOnly="True" />
<toolkit:DataGridTextColumn
Header="Task Description"
Width="*" Binding="{Binding TaskDescription}"
IsReadOnly="True" />
<toolkit:DataGridTextColumn
Header="Due Date" Width="*"
Binding="{Binding DueDate}"
IsReadOnly="True" />
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
</Grid>
</UserControl>
TasklistViewModel.cs
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Windows;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Controls;
using System.Collections.ObjectModel;
using System.Text;
using System.IO;
namespace MyProject
{
public class TasklistViewModel: ViewModelBase
{
ObservableCollection<TaskModel> _TaskList;
public TasklistViewModel()
{
_MyTaskList= dal.GetTaskList());
}
public ObservableCollection<TaskModel> MyTaskList
{
get { return _MyTaskList; }
set
{
if (_MyTaskList!= value)
{
this._MyTaskList= value;
this.OnPropertyChanged("MyTaskList");
}
}
}
private TaskModel _SelectedTaskItem;
public TaskModel SelectedTaskItem
{
get { return _SelectedTaskItem; }
set
{
if (value != null)
{
_SelectedTaskItem= value;
OnPropertyChanged("SelectedTaskItem");
if (null != _SelectedTaskItem)
{
ObservableCollection<TaskModel> oCol =
new ObservableCollection<TaskModel>();
foreach (TaskModel itm in MyTaskList)
{
if (itm.TaskID == _SelectedTaskItem.BundleID)
{
itm.IsSelected = _SelectedTaskItem.IsSelected;
}
oCol.Add(itm);
}
MyTaskList.Clear();
MyTaskList = oCol;
OnPropertyChanged("MyTaskList");
}
}
}
}
}
}