删除布局元素的最佳方法是什么

时间:2010-01-02 20:37:23

标签: wpf silverlight xaml

我有一个进度条显示为我正在异步加载webclient对象的图像。下载映像后,我在viewmodel中将loadingComplete bool属性设置为True,以指示加载过程已完成。目前我正在将此值用于附加属性以将焦点设置在控件上。

我想要的是折叠进度条控件然后显示图像。

我想知道的是,最好的方法是什么,以下方法的优点和缺点是什么?

我应该

1)在viewmodel上创建一个LoadingOpacity bool属性,然后我可以将其设置为将进度条的不透明度设置为0.0(这将在设置loadingComplete时设置)?

2)或者我应该创建一个转换器(IValueConverter)并使用loadingComplete属性将其转换为Visibility.Collapsed值。这样我在视图模型中不需要任何额外的属性吗?

3)或者我应该在视图模型上创建折叠属性并将其绑定到进度条的visibility属性?

4)或者是否有其他方法可以做到这一点?

由于 JD

1 个答案:

答案 0 :(得分:7)

  1. 由于鼠标点击测试,我不会选择不透明度解决方案。您的透明元素仍然会被命中测试,但是您可能希望在下载完成时淡出进度条,但是事件触发的故事板可能是更好的选择。
  2. 我个人喜欢价值转换器,它们简单,简洁,具有描述性和重点。 这也被广泛接受为正确的选择。
  3. MVVM最佳实践要求视图模型不了解视图。通过向视图模型引入Visibility类型属性,您可以通过某种方式将其耦合到视图(尽管很短)。
  4. 可能:)