2010-01-02 80 views
2

我有一个进度条显示,因为我正在异步加载webclient对象的图像。一旦图像下载完成,我在我的viewmodel中将loadingComplete布尔属性设置为True,表示加载过程已经完成。目前,我正在使用此值作为附加属性来将焦点设置在控件上。什么是删除布局元素的最佳方法

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

我想知道的是做这件事的最好方法是什么,以下方法有哪些优缺点?

1)应该创建视图模型一个LoadingOpacity布尔属性,我可以再设置来设置进度条的不透明度为0.0(这将在loadingComplete设置进行设置)?

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

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

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

感谢 JD

回答

7
  1. 我不会因为鼠标的不透明性的解决方案去命中测试。你的透明元素仍然是可见的,但是你可能想要在下载完成时淡化进度条,但是一个事件触发的故事板可能是更好的选择。
  2. 我个人喜欢价值转换器,它们简单,简洁,描述性和重点。 这也被广泛接受为正确的选择。
  3. MVVM最佳实践规定视图模型不知道该视图。通过在视图模型中引入Visibility类型属性,您可以通过某种方式将它与视图耦合(尽管分钟)。
  4. 大概:)
+0

是的 - 选项2矿,太:) – kiwipom 2010-01-02 20:54:54

+0

+1的选项2. – 2010-01-02 21:01:30

+0

谢谢你们。关于3,视图模型应该更多地以模型/业务为导向?我的意思是通过阅读属性我可以计算出它们的用途,但是如果我带来不透明或可见性,它会变得更难以理解,并且它们将专用于我所拥有的视图(如果我换出视图,那么它们可能根本不会被使用)。 – 2010-01-02 21:07:30

相关问题