我想知道是否可以在数据网格左上角的"全选"按钮中添加功能,以便它也可以取消选择所有行?我有一个方法附加到一个按钮来执行此操作,但如果我可以从全选按钮触发此方法,以保持功能在视图的相同部分,这将是很好的.这个"全选"按钮是否可以添加代码,如果是,那么如何进入按钮?我找不到任何例子或建议.
是否有简单的可能性来检查DataGrid当前是否在EditMode中(无需订阅BeginningEdit和CellEditEnding)
我想将复制功能添加到WPF DataGrid.
我使用DataGrid显示多个字段,其中一个是多行描述.网格显示数据就好了,直到我尝试通过设置隐藏标题行HeadersVisibility="Column".标题行消失但是当我滚动时,行标题会重新出现一些随机行.
我已将其缩小到显示多行描述的列.只要我离开这一栏,我就没有这个问题.我试过用两者分开线"\r\n","\n"但都没有工作.DataGrid是否支持多行文本字段?
下面是一张图片,显示了正在发生的事情以及我用来创建网格的XAML.

<DataGrid DataContext="{StaticResource personRepository}"
ItemsSource="{Binding PersonList, Mode=OneWay}"
AutoGenerateColumns="False"
HeadersVisibility="Column"
CanUserSortColumns="False"
SelectionMode="Extended"
IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Width="80" Binding="{Binding Id, Mode=OneWay}" />
<DataGridTextColumn Header="First Name" Width="150" Binding="{Binding FirstName, Mode=OneWay}" />
<DataGridTextColumn Header="Last Name" Width="150" Binding="{Binding LastName, Mode=OneWay}" />
<DataGridTextColumn Header="Description" Width="*" Binding="{Binding Description, Mode=OneWay}" />
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud) 我在使用NotifyPropertyChanged单击按钮时更新我的数据网格时遇到问题.如果我在代码中设置DataGrid.ItemsSource,它可以工作,但如果我在xaml中设置它,它就不会.这里是&xaml背后的一些代码:
namespace MyWpfDataBindingLab
{
public partial class NpcWindow : Window
{
DataCollection dc = new DataCollection();
public NpcWindow()
{
InitializeComponent();
//command binding code
//...
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//if i set the ItemsSource here, updating of the UI works
//dataGrid1.ItemsSource = dc;
}
private void CmdCollectionChangedExecute(object sender, ExecutedRoutedEventArgs e)
{
foreach (SampleClass s in dc)
{
s.Property1 = "changed";
s.Property3 = "changed";
s.Property3 = "changed";
break;
}
dc.Add(new SampleClass("new sample 1", "new sample 2", "new sample …Run Code Online (Sandbox Code Playgroud) 如何让我RowStyle获得申请AlternatingRowBackground?我想要的物品,有IsOrange作为true有Orange背景,无论交替行背景,这是不是这种情况目前的.
XAML:
<DataGrid Name="g"
AlternatingRowBackground="Blue"
AlternationCount="2"
...
SelectionMode="Single">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding IsOrange}" Value="Y">
<Setter Property="Background" Value="Orange" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
...
</DataGrid>
Run Code Online (Sandbox Code Playgroud) WPF 4.0 DataGrids中似乎存在一个错误.
我正在实现IDataErrorInfo我的对象,我有ObservableCollection一个datagrid绑定到.我已经ValidatesOnDataErrors=True设置了列但没有设置行.我有UpdateSourceTrigger="PropertyChanged"
验证在逐个细胞级别上完美地起作用.但是,当您使单元格无效时,转到任何其他单元格,然后返回到无效单元格并输入有效数据,该单元格变为有效,但该行有效时该行仍然无效.
目前我正在研究WPF应用程序(使用MVVM),我在其中显示数据DataGridView.
<DataGrid RowHeaderWidth="0" ItemsSource="{Binding PartsList,UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Item Name" IsReadOnly="True" Width="*" Binding="{Binding ProductName}"></DataGridTextColumn>
<DataGridTextColumn Header="Model Name" IsReadOnly="True" Width="*" Binding="{Binding CarModelName}"></DataGridTextColumn>
<DataGridTextColumn Header="Company Name" IsReadOnly="True" Width="*" Binding="{Binding CompanName}"></DataGridTextColumn>
<DataGridTextColumn Header="Price" IsReadOnly="True" Width="*" Binding="{Binding Rate}">
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
这里PartsList是ObservableCollection实体Part的一个.
现在我想添加自定义列到DataGrid显示折扣和另一列显示净金额.我怎样才能做到这一点?
请提出一个好主意,因为我需要处理成千上万的记录,因此性能对我来说非常重要.
先感谢您.
<DataGrid Name="myfirstdg"
Grid.Row="2"
AutoGenerateColumns="False"
CanUserSortColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
SelectionUnit="Cell">
<DataGrid.Columns>
<DataGridTextColumn Header="Date"
Binding="{Binding Path=date}"
Width="SizeToCells"
IsReadOnly="True"
MinWidth="100"/>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
我有一个简单DataGrid的DataGridTextColumn内容.如何添加Datepicker到我的DataGridTextColumn?
我们有一个小的.NET 4.0 DataGrid WPF演示,其代码如下所示.它由一个包含30列和3000行的非虚拟化DataGrid组成.由于我们需要不支持虚拟化的分组功能,因此它是非虚拟化的.
当您运行此应用程序,并在它和其他窗口之间切换时,有一个明显的滞后(约1秒).这仅在重新激活窗口时发生 - 一旦激活,在内部单击没有相关的延迟.
我们已经使用性能分析器对窗口重新激活时发生的这种滞后进行了分析,并发现当窗口重新聚焦时会触发很多依赖属性通知.我们不知道为什么会这样,而且似乎没必要.
我们发现此延迟与DataGrid中的行数成比例.有谁知道我们如何消除或减少这种滞后?
更新:似乎即使停留在应用程序内部,但专注于另一个控件(如网格外的文本框),也会出现焦点延迟.因此,我们现在知道它不是一个窗口切换问题,而是一个由焦点变化引起的问题,但仍然不确定其确切原因.
(MainWindow.xaml)
<Window x:Class="WpfApplication20.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid Name="dataGrid" VirtualizingStackPanel.IsVirtualizing="False" AutoGenerateColumns="True"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
(MainWindow.xaml.cs)
using System.Collections.Generic;
using System.Windows;
namespace WpfApplication20
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Row> rows = new List<Row>();
for(int i = 0; i < 3000; i++)
{
Row row = new Row(i);
rows.Add(row);
}
dataGrid.ItemsSource = rows;
}
}
public class Row
{
public double Double1 { get; set; …Run Code Online (Sandbox Code Playgroud) wpf ×10
wpfdatagrid ×10
c# ×6
.net ×4
datagrid ×2
data-binding ×1
datepicker ×1
mvvm ×1
validation ×1
wpf-controls ×1
xaml ×1