目前,当我点击一行时,我的DataGrid会显示RowDetails.但我想只在双击时显示RowDetails.
解决这个问题的任何想法?
谢谢!
我有一个ScrollViewer的问题,我用它来滚动包含数据网格的用户控件.如果没有滚动查看器,列会根据需要填充数据网格,但在添加滚动查看器时,列会缩小到~15px.我能够简化我的布局,仍然可以重现这种行为.
将数据网格宽度绑定到另一个控件时,列具有它们的法线,但这与数据网格上的固定宽度具有相同的效果.我想我不是第一个遇到这个问题的人.如何解决此问题,让我的网格将其大小调整为可用空间并为其列提供一个比例宽度?
使用scrollviewer:
没有:

<Window x:Class="GridTest.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">
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Grid MinWidth="200">
<DataGrid Margin="0" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Column A" Width="*"/>
<DataGridCheckBoxColumn Header="Column B" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
如果没有可用的记录,我想TextBlock在标题下面添加一个数据网格,显示消息"找不到记录".
请考虑附图以供参考.
在WPF工具包datagrid中,我有一个数据触发器绑定到单元格元素的不透明度.
当UpVisibility路径变为1时,动画开始淡化为0.哪个有效.
但是我的问题现在 - 如果我需要提前停止/取消淡入淡出并且设置UpVisibility为0,路径仍然可见并且随着任何事情的发生而消失....
如何使用MyValue对象立即将不透明度降为0?
<Path Data="M 5,0 0,10 10,10" Height="10" Width="10" Fill="Green" Opacity="{Binding MyValue[0].UpVisibility}" Margin="5,0,5,0">
<Path.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding MyValue[0].UpVisibility}" Value="1.0">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:10" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
Run Code Online (Sandbox Code Playgroud) 我正在实现一个包含许多关键值的项目的WPF DataGrid.项目按项目类别分组.
对于每个类别,应该有:
这些行应始终位于每个组的顶部(排序过滤).
我的第一个解决方案是将这些数据放在组头中.这不是一个好的解决方案,因为组头不支持列.即它应该通过获得列宽来构造.
这可以做到,但当用户想要重新排序和隐藏列时,它会变得复杂.
DataGrid使用的是CollectionViewSource,因此它没有填充C#代码.基本上我正在扩展这个例子:http://msdn.microsoft.com/en-us/library/ff407126.aspx
谢谢和最诚挚的问候 - matti
我正在尝试更改DataGridTextColumn的颜色.
这是我正在做的事情:
<DataGridTextColumn
Header="Status"
Binding="{Binding IsActive,
Converter= {StaticResource BoolToStatusConverter}}"
Foreground="{Binding Path=IsActive,
Converter={StaticResource BoolToColorConverter}}"/>
Run Code Online (Sandbox Code Playgroud)
文本设置正确,但颜色不会改变,我收到以下错误:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or
FrameworkContentElement for target element. BindingExpression:Path=IsActive;
DataItem=null; target element is 'DataGridTextColumn' (HashCode=40349079); target
property is 'Foreground' (type 'Brush')
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能工作?
我遇到了一个非常奇怪的问题.我正在尝试将全局样式应用于a中的几个控件DataGrid.他们中的大多数都完全按照我的期望工作.但是,TextBlock永远不会应用样式.样式ComboBox,TextBox,Label,和其他几个人都越来越适用于它们各自的对照,但不是TextBlock.我尽可能地简化了代码,问题仍然存在.我在下面提供了代码示例.
我需要应用的样式TextBlock,我不想手动应用它TextBlock.
<DataGrid ItemsSource="{Binding Data}" AutoGenerateColumns="False">
<DataGrid.Resources>
<Style TargetType="TextBlock">
<Setter Property="ANY_TEXTBLOCK_PROPERTY" Value="VALUE" />
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Test">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Globably Applied" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
更多信息:
TextBlock(TextBox,ComboBox,等)的正常工作.DataTemplate将正常工作.TextBlock使用x:Key将工作.DataGridCell使用样式TextElement.PROPERTY将应用于TextBlock.虽然其中一些将适用于该风格TextBlock,但它们有自己的问题.直接指定样式或在a中某处定义样式DataGridColumn意味着我将不止一次地应用样式.使用TextElement.PROPERTYon DataGridCell将将样式应用于不仅仅是TextBlock控件,并将限制您可以设置的属性数.
我在我的应用程序中使用WPF Datagrid,可以通过单击标题对列进行排序.
我想知道是否有任何方法可以以编程方式清除列的排序?
我尝试对列进行排序然后清除MyDataGrid.Items.SortDescriptions,但该集合为空(即使已对一列进行了排序).
我也尝试过:
MyDataGridColumn.SortDirection = null;
Run Code Online (Sandbox Code Playgroud)
问题是列指示消失了,但是在编辑单元格和切换行时仍然会发生排序.
有没有办法清除列的排序?
编辑(为清晰起见):问题是,如果用户重新点击相同的列标题,我想再次允许排序,因此将CanUserSort设置为false会有问题,即使它是在XAML中完成的.简而言之,我正在尝试做的是,一旦已排序的列具有已修改的单元格,就会阻止对行进行排序.我想强制用户重新点击标题.
我有一个MVVM模式的WPF应用程序.在我的一个观点中,我必须绑定ObservableCollection到视图.在那个视图中,我有一个ListBox和一个DataGrid都绑定到相同ObservableCollection但做不同的事情,如事件,风格等.
我只需要在时间,我所做的是创建两个用户控件,一个用于显示其中一个控件DataGrid和其他的ListBox.我通过ContentControl在主视图上放置一个类似于这个博客的东西来切换它们.默认视图是DataGrid,当点击一个按钮时,显示另一个视图(即ListBox).直到这个工作正常.
还要记住,数据网格列是使用以下链接中描述的解决方案动态生成的.所以当我回去DataGrid查看它时,在foreach语句中向数据网格添加列时抛出错误(请参阅上一个链接的答案)
"带有标题'Ord'的DataGridColumn已经存在于a
DataGrid.的Columns集合中.DataGrids不能共享列,也不能包含重复的列实例."
但我确信在DataGrid向其Count属性添加列之前是零(dataGrid.Columns.Count()).那么DataGrid标题属性如何保持?有没有办法清除标题值?
请建议......
wpf ×10
wpfdatagrid ×10
c# ×5
xaml ×3
datagrid ×2
.net ×1
binding ×1
c#-4.0 ×1
mvvm ×1
scrollviewer ×1