我最近开始尝试使用DataBinding并为我的自定义类实现DependencyProperties。这一切都正常工作,可能性是令人兴奋的,但是,我遇到了一个问题,可以通过略微修改整体课程设计来解决。我想确保这是唯一的选择,我不会错过任何东西。用依赖属性替换不平凡的getter
因此,我的班级存储有关用户导入到应用程序中的视频文件的信息。其中包括:
public class VideoFile {
public string FilePath { get; protected set; }
public uint ID { get; protected set; ]
public string Extension { get { return Path.GetExtension(FilePath); } }
public string FileName { get { return Path.GetFilename(FilePath); } }
}
所以,我已经用DependencyProperty成功替换了FilePath。但是,在用户界面中,我大多只想显示文件名,它使用一些逻辑来提供它的价值。据我所知,这里是我的选择:
- 我可以简单地创建一个文件名和扩展DependencyProperties,并在构造函数中设置自己的价值,但这是多余的;我在FilePath中已经有了这些信息,所以我想避免这个选项。
- 创建ValueConverters,一个用于显示文件名,另一个用于显示扩展名,并在我的绑定中使用它们。
我只是简单地遇到了ValueConverters,所以我不确定它。我可以将它们用于此目的吗?或者,我刚刚遇到他们存在的主要原因之一? :)
最后但并非最不重要,任何人都可以想到一个类似的情况,当一个ValueConverter不是正确的路要走吗?我想避免直接跳入它们,只是意识到它不会工作,因为“那一个”属性不能用这种方式表达。
你为什么要将这些转换为'DependencyProperty'?我会从发布的代码中怀疑你并不需要。 –
@DanPuzey,因为我想在UI中显示它们。更具体地说,一个列表框,每个项目表示这个类的一个实例。以缩略图,文件名,大小(MB)和持续时间(秒)为单位。虽然这些属性预计不会改变,但我想在各个地方展示它们,并且厌倦了编写循环和在代码中创建控件。我想要一个漂亮的,干净的XAML和一个摇摆的DataTemplate :) –
你不需要'DependencyProperty'能够在UI中显示它们。事实上,我建议你应该避免这是一个不必要的开销。 (请参阅我的答案以获得替代方案。) –