C# WPF数据网格可以';不要选择一行
我用包含对象的C# WPF数据网格可以';不要选择一行,c#,wpf,datagrid,C#,Wpf,Datagrid,我用包含对象的列表的绑定填充了DataGrid。我可以让它们出现在数据网格中,但问题是,我无法选择行。当我添加IsSynchronizedWithCurrentItem时,第一行似乎已被选中(该行的蓝色背景),但我无法更改它,甚至无法删除它。下面是我在XAML中的DataGrid的样子: <Window x:Class="ClientTrackerWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/
列表的绑定填充了DataGrid
。我可以让它们出现在数据网格中,但问题是,我无法选择行。当我添加IsSynchronizedWithCurrentItem
时,第一行似乎已被选中(该行的蓝色背景),但我无法更改它,甚至无法删除它。下面是我在XAML中的DataGrid
的样子:
<Window x:Class="ClientTrackerWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="560" Width="594" KeyDown="Window_KeyDown">
<Grid>
<DataGrid AutoGenerateColumns="False" Height="231" HorizontalAlignment="Left" Margin="1,2,0,0" Name="datagridClients"
VerticalAlignment="Top" Width="500" HorizontalScrollBarVisibility="Disabled" SelectionChanged="datagridClients_SelectionChanged"
SelectionMode="Single" IsSynchronizedWithCurrentItem="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Prénom" MinWidth="175" Binding="{Binding Path=_prenom}" />
<DataGridTextColumn Header="Nom" MinWidth="175" Binding="{Binding Path=_nom}" />
<DataGridTextColumn Header="Téléphone" MinWidth="150" Binding="{Binding Path=_telephone}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
我试着在这里和谷歌上搜索,但找不到对我有用的东西。顺便说一下,我用的是C
这是C部分
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Data;
使用System.Windows.Documents;
使用System.Windows.Input;
使用System.Windows.Media;
使用System.Windows.Media.Imaging;
使用System.Windows.Navigation;
使用System.Windows.Shapes;
命名空间ClientTrackerWPF
{
///
///Logique d'interaction pour main window.xaml
///
公共部分类主窗口:窗口
{
BDD-BDD;
列出客户名单;
bool start=false;
公共主窗口()
{
初始化组件();
}
私有void initilisationApp()
{
bdd=新的bdd();
bdd.startConnection(“clients.sqlite”);
listclients=新列表();
listclients=bdd.getAllClients();
datagridClients.ItemsSource=ListClients;//绑定的源
tabMain.IsEnabled=true;
menuFileInit.Visibility=Visibility.Collapsed;
menuFileNewClient.Visibility=Visibility.Visible;
开始=真;
}
private void menuFileInit_单击(对象发送方,路由目标)
{
initilisationApp();
}
私有void datagridClients\u SelectionChanged(对象发送方,selectionchangedventargs e)
{
控制台写入线(e.Source);
}
}
}
谢谢 显示网格的列
部分。确保在datagridClients\u SelectionChanged中未设置事件参数的Handled属性。e、 已处理=正确;我编辑了代码并添加了列@安迪,我试过用e.Handled=真;但它没有改变任何事情,事实上,我正在学习C#WPF,所以我的代码非常基本。@Stealthunter将你的C#代码连同完整的XAML@HighCore在这里,我添加了C#部分和更多的XAML。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ClientTrackerWPF
{
/// <summary>
/// Logique d'interaction pour MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
BDD bdd;
List<Client> listeClients;
bool started = false;
public MainWindow()
{
InitializeComponent();
}
private void initilisationApp()
{
bdd = new BDD();
bdd.startConnection("clients.sqlite");
listeClients = new List<Client>();
listeClients = bdd.getAllClients();
datagridClients.ItemsSource = listeClients; //The source of the binding
tabMain.IsEnabled = true;
menuFileInit.Visibility = Visibility.Collapsed;
menuFileNewClient.Visibility = Visibility.Visible;
started = true;
}
private void menuFileInit_Click(object sender, RoutedEventArgs e)
{
initilisationApp();
}
private void datagridClients_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Console.WriteLine(e.Source);
}
}
}