我有一个DataGrid包含多个列的WPF应用程序,包括一个Name列.如果用户切换到特定视图,我希望数据按名称进行预排序(我希望排序箭头显示在Name标题中,就像用户点击了该标题一样).但是,我无法找到实现这一目标的预期属性.我一直在寻找这样的事情SortColumn,SortColumnIndex,SortDirection,等.
是否可以在标记(XAML)中指定默认排序列和方向,或WPF工具包不支持DataGrid?
当用户在我的列中进行排序时DataGrid,我希望将所有null或空单元格排序到底部,而不是顶部.
我写了一个IComparer<T>确保空白总是向下排序,但我无法弄清楚如何将它应用到我的列DataGrid.请注意,我使用LINQ 方法进行的初始排序DataGrid很OrderBy()有效.问题是用户执行的所有后续排序都将空白排序到顶部.
比较代码
public class BlankLastStringComparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (string.IsNullOrEmpty(x) && !string.IsNullOrEmpty(y))
return 1;
else if (!string.IsNullOrEmpty(x) && string.IsNullOrEmpty(y))
return -1;
else
return string.Compare(x, y);
}
}
Run Code Online (Sandbox Code Playgroud)
问题
如何DataGridColumn使用我的比较器?或者,如果这不可能,您能提供解决方法吗?如果可能的话,我希望有一个MVVM友好的解决方案.
我正在使用WPF工具包datagrid,我想根据单元格的内容设置单元格的背景颜色,而不是行.
为了简单起见,我们假设列被称为Foo,我希望当Foo为1时,单元格的背景为蓝色,Foo为2时为红色,Foo为3时为黄色,Foo为3时为绿色.
如果我能做到这一点,我很确定我能解决任何需要处理的更复杂的案例.
这不是秘密:Silverlight的DataGrid默认风格很漂亮而WPF很差.
让我向社区询问是否有人复制了SL样式以在WPF中使用,而不是重新发明轮子.
请查看截图并自行判断Silverlight和WPF团队如何投资他们的产品.
Silverlight默认样式的DataGrid:

WPF默认样式的DataGrid(在Saied K的回答之后更新):

我正在使用上面的Toolkit的Datepicker,但我想将它限制为仅限月份和年份,因为在这种情况下用户不知道或不关心确切的日期.显然,数据存储在Datetime中格式将存储日,但这与我无关.是否有一种简单的方法来解决这个问题?
谢谢
我有一些表格数据,其中包含很多字段,当我的WPF应用程序调整大小时,其中很多都被切断了.但是,我希望看到前6列始终是重要的.我怎样才能以网格格式实现这一目标?我正在使用WPFToolkit DataGrid,但如果存在,可以说服它更改为不同的控件.
现在,我在滚动查看器中使用两个不同的DataGrids与最右边的数据网格,水平滚动和垂直滚动.我还必须同步这两个用于排序目的或完全禁用排序.
我正在尝试使用WPF工具包中的图表(使用LineSeries),我根本不需要传奇.我需要这个,因为我有10个这样的图表,每个都有来自不同来源的数据,我想为所有10个绘制一个图例,以节省屏幕空间.
默认情况下,图例会在您添加第二个LineSeries时出现.有没有办法阻止它出现?
谢谢,
精灵.
我安装了2010年2月的WPF工具包,因为我对评估AutoCompleteBox控件感兴趣,而且我的成功非常有限.我可以让控件工作,但是一旦我尝试在XAML中设置它的任何属性,我得到以下内容:
未知的构建错误,'无法解析对程序集的依赖关系'WPFToolkit,Version = 3.5.40128.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'因为它尚未预加载.使用ReflectionOnly API时,必须通过ReflectionOnlyAssemblyResolve事件按需预加载或加载相关的程序集.
我一直在一个新的解决方案的空白WPF窗口上测试它.我猜我只是缺少一个引用或者其他东西......这是XAML(我没有在.xaml.cs中添加任何东西):
<Window x:Class="WpfToolkitApplication.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
Title="Window1" Height="300" Width="300">
<Grid>
<toolkit:AutoCompleteBox Height="25"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
我添加的唯一引用是System.Windows.Controls.Input.Toolkit.有任何想法吗?
我遇到了WPF工具包中的图表引擎问题.
我没有将数据移动到适当的对象模型,因此ItemSource支持一个DataView.
第一次尝试
<chartingToolkit:ScatterSeries x:Name="TargetSeries"
DataPointStyle="{StaticResource TargetStyle}"
ItemsSource="{Binding Path=TargetSeriesData}"
IndependentValueBinding="{Binding Path=TargetSeries_X}"
DependentValueBinding="{Binding Path=TargetSeries_X}" />
Run Code Online (Sandbox Code Playgroud)
这崩溃是因为我认为绑定被认为是情节的值或某种不匹配.
第二次尝试
<chartingToolkit:ScatterSeries x:Name="TargetSeries"
DataPointStyle="{StaticResource TargetStyle}"
ItemsSource="{Binding Path=TargetSeriesData}"
IndependentValuePath="{Binding Path=TargetSeries_X}"
DependentValuePath="{Binding Path=TargetSeries_X}" />
Run Code Online (Sandbox Code Playgroud)
此崩溃发生在初始化步骤期间,因为Path属性不支持依赖项属性,因此无法绑定.
第三次尝试
<chartingToolkit:ScatterSeries x:Name="TargetSeries"
DataPointStyle="{StaticResource TargetStyle}"
ItemsSource="{Binding Path=TargetSeriesData}"
IndependentValuePath="targetFooXColumnName"
DependentValuePath="targetFooYColumnName" />
Run Code Online (Sandbox Code Playgroud)
现在这个有效!但我想使用绑定,所以我可以从使用targetFooXColumnName到切换targetFooBarXColumnName.因此,此解决方案将导致大量hacky外观代码手动切换路径.
有没有办法来解决这个问题?我可以使用某种转换器来获取Binding属性以正确地从DataView中的列中提取数据吗?
谢谢,乔尔
任何人都可以帮我找到一个免费的开源WPF图表库吗?我们正在开发仪表板工具并使用之前的ms图表.现在我们计划选择WPF并坚持寻找一个图表库,它或多或少像ms图表一样,具有对3D再现的原生支持.
提前致谢.
wpftoolkit ×10
wpf ×8
datagrid ×4
charts ×2
sorting ×2
xaml ×2
background ×1
binding ×1
c# ×1
datepicker ×1
datetime ×1
mvvm ×1
silverlight ×1
styling ×1
wpfdatagrid ×1