互联网上有很多解决方案试图填补WPF看似非常基本的遗漏.我真的很困惑什么是"最好"的方式.例如......我希望列标题中有小的向上/向下箭头来指示排序方向.显然有3种不同的方法可以做到这一点,有些使用代码,有些使用标记,有些使用标记加代码,而且所有看起来都像是黑客.
有没有人遇到这个问题,并找到了他们完全满意的解决方案?似乎奇怪的是,WPF缺少这样一个基本的WinForms功能,需要被黑客攻击.
所以我正在阅读那些在另一个问题中链接到的Windows Vista UI指南,并且他们提到您应该能够在切换到120 DPI后继续存在.好吧,我安装了我的应用程序,启动了我方便的虚拟机,我们得到了什么... AAAAGH !!! 大规模的UI失败!
一切都是乱七八糟的:一些容器对于他们的文本来说不够大; 一些"彼此相邻"的控件现在都被挤压在一起/分开; 有些按钮不够高; 我的ListView专栏不够广...... eeek.
这听起来像是一种完全不同的方法.我之前的一个基本上是使用VS2008 Windows窗体设计器来创建一个基于像素的布局.我可以看到,如果我坚持使用Windows Forms,FlowLayoutPanels会有所帮助,尽管我发现它们在过去相当不灵活.它们也没有解决容器(例如表格本身)不够大的问题; 大概有办法做到这一点?也许那个AutoSize属性?
这也可能表明是时候跳槽到WPF了; 我的印象是它专门为这种东西而设计.
基本问题似乎归结为以下几点:
说真的,似乎每次我想让我的UI元素互相交谈,我最终编写了一个新的,定制的,IValueConverter :(有人告诉我,我做错了,拜托!
例子:
UriIsValidConverter!UriIsValidAndBoolIsFalseMultiConverter!DirectoryPathToFileList转换器!FileInfoToBitmap转换器的时间!StatusStringToSolidColorBrushConverter!我真的认为这并不比使用TextChanged事件(或其他)手动连接所有内容的旧Windows Forms方法好多少.我猜这仍然是一个选择.也许这就是人们真正做的事情,而我正在努力使一切都适合数据绑定范式?
所以,是的,请告诉我这是否真的是WPF编码的方式---或者如果我做错了,如果是的话,我应该做什么.