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

标签 wpf silverlight xaml

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

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

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

我应该

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

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

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

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

谢谢 京东

最佳答案

  1. 由于鼠标点击测试,我不会选择不透明度解决方案。您的透明元素在点击测试时仍然可见,但您可能希望在下载完成后淡出进度条,但也许由事件触发的 Storyboard 是更好的选择。
  2. 我个人喜欢值转换器,它们简单、简洁、描述性强且切题。 这也被广泛认为是正确的选择。
  3. MVVM 最佳实践规定 View 模型不知道 View 。通过将 Visibility 类型的属性引入 View 模型,您可以以某种方式(尽管很微小)将其耦合到 View 。
  4. 可能:)

关于wpf - 删除布局元素的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992756/

相关文章:

c# - 将 StackPanel.Visibility 绑定(bind)到其子项的 Visibility 属性

c# - 为什么 Window.Close 事件会传播?

c# - 在 MVVM 中解耦 ViewModel

wpf - 如何将 WPF 滚动条样式应用于特定的 ListView ?

sql-server - silverlight 5 功能请求列表?

c# - 如何在 Silverlight 4 中设置数据网格的高度

xaml - Xamarin 表单 : How to reference to the parent binding

c# - 如何从资源项目中获取图像

c# - 从 silverlight 导航和发布数据

c# - 无法让 WPF ItemsControl 垂直拉伸(stretch)