问题:
如果我DataGrid不完全可见(显示水平和垂直滚动条)并且我单击其中一个部分可见的单元格,则网格会自动滚动以将该单元格显示在视图中.我不希望这种情况发生.我试过玩RequestBringIntoView,像这样:
private void DataGrid_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用.
我试过的事情:
UserControls; 我试图把一个事件处理程序RequestBringIntoView上的所有UserControls使我的细胞,并试图处理事件,想,也许我是不是只是处理做得不够RequestBringIntoView的DataGrid本身.这没用.DataGrid一个内部的ScrollViewer,而办理ScrollViewer的RequestBringIntoView事件.这实际上是有效的,并且停止了自动滚动行为,但在我的情况下托管一个DataGrid内部ScrollViewer是完全不可取的,所以我需要提出一个不同的解决方案.我不知道如何阻止这种行为,任何想法?
我的源码是在MySQL数据库中,我做了一个更新命令,现在我需要刷新我的DataGrid.
MySqlCommand cmd = new MySqlCommand(
"update request set status = " + StatusRequest(value) +
" where id = " + rowView[0].ToString() + "", conn);
MySqlDataReader myReader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我如何刷新我的DataGrid?
我搜索示例或示例以通过文本框过滤WPF DataGrid列元素.
同样的事情也到这个(给定的例子使用WPFToolkit ...通过微软显然放弃了...)
XAML
<Canvas>
<DataGrid Height="200" Name="dataGrid1" Width="200" Canvas.Top="23" />
<TextBox Name="textBox1" Width="120" />
</Canvas>
Run Code Online (Sandbox Code Playgroud)
CS:
public partial class MainWindow : Window
{
private List<Personne> persons;
ICollectionView cvPersonnes;
public MainWindow()
{
InitializeComponent();
persons = new List<Personne>();
persons.Add(new Personne() { Id = 1, Nom = "Jean-Michel", Prenom = "BADANHAR" });
persons.Add(new Personne() { Id = 1, Nom = "Gerard", Prenom = "DEPARDIEU" });
persons.Add(new Personne() { Id = 1, Nom = "Garfild", Prenom = "THECAT" }); …Run Code Online (Sandbox Code Playgroud) 我只想在我最左边的列中显示行号DataGrid.这有什么属性吗?
请记住,这不是我桌子的主键.当列排序时,我不希望这些行号与它们的行一起移动.我基本上想要一个运行计数.它甚至不需要标题.
我有一些表格数据,其中包含很多字段,当我的WPF应用程序调整大小时,其中很多都被切断了.但是,我希望看到前6列始终是重要的.我怎样才能以网格格式实现这一目标?我正在使用WPFToolkit DataGrid,但如果存在,可以说服它更改为不同的控件.
现在,我在滚动查看器中使用两个不同的DataGrids与最右边的数据网格,水平滚动和垂直滚动.我还必须同步这两个用于排序目的或完全禁用排序.
我希望将行号放入WPF 4 DataGrid的RowHeader中,以便它具有类似Excel的列,用于DataGrid的行号.
我在网上看到的解决方案建议在业务对象中添加索引字段.这不是一个真正的选择,因为DataGrid将会被大量使用,我们不希望不断跟踪这些索引字段的变化.
非常感谢
我在互联网上寻找解决方案,但无法在我的样本中找到它.我需要在从代码隐藏生成的Context菜单项之间添加一个分隔符.我尝试使用如下代码行添加它但没有成功.
this.Commands.Add(new ToolStripSeparator());
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人可以提供帮助.先感谢您.
上下文菜单XAML:
<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu ItemsSource="{Binding Commands}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding}" />
<Setter Property="Header" Value="{Binding Path=Text}" />
<Setter Property="CommandParameter" Value="{Binding Path=Parameter}" />
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
</Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud)
在方法中添加的C#:
this.Commands = new ObservableCollection<ICommand>();
this.Commands.Add(MainWindow.AddRole1);
this.Commands.Add(MainWindow.AddRole2);
this.Commands.Add(MainWindow.AddRole3);
this.Commands.Add(MainWindow.AddRole4);
//this.Add(new ToolStripSeparator());
this.Commands.Add(MainWindow.AddRole5);
this.Commands.Add(MainWindow.AddRole6);
this.Commands.Add(MainWindow.AddRole7);
Run Code Online (Sandbox Code Playgroud) 我是WPF的新手,我用它来建立一个销售点系统.
我有一个DataGrid绑定到一个主窗口控制ObservableCollection的Item,将要出售的收银员将进入/扫描项目每个项目的默认数量为1,但它是可用于收银员手动更改数量.
每当我更改数量时,它应该在我将单元格离开单元格到行中的另一个单元格时使用项目价格的总和更新总价格,但是不会发生,只有当我转到另一行时才更新源不是同一行中的另一个单元格.
无论如何在DataGrid更改单元格而不是行时强制更新源?
我有一个绑定的数据网格ObservableCollection<Product>.更新网格后,这会自动更新集合中的Product对象.
我现在要做的是在集合中的任何对象被更新时触发某种甚至触发 - 或者 - 某种类型的绑定到集合,如果任何Product已经更新,它将返回true/false depedant.
总体目标是在我的主窗口上有一个保存按钮,如果没有对我的集合进行任何更改则禁用该按钮,如果已进行了更改,则启用该按钮.
我已阅读INotifyPropertyChange但我不知道如何使用它来监控整个集合的变化.
另外,如果我在Product类上实现此接口,我不会看到我的UI如何监视集合中的每个产品 - 或者它可以吗?
wpf ×10
wpfdatagrid ×10
datagrid ×4
c# ×3
ado.net ×1
binding ×1
mysql ×1
scroll ×1
silverlight ×1
wpf-controls ×1
wpftoolkit ×1