VisualStateManager和MVVM

时间:2013-05-24 07:20:36

标签: xaml mvvm windows-8 visualstatemanager

我正在使用Windows 8商店应用程序(使用网格应用程序模板),当我从服务器加载数据时,我想显示ProgressRing并隐藏GridView或{ {1}}(取决于应用是否被捕捉),一旦数据完全加载就会显示数据。

问题是,当ViewModel加载数据时,我需要能够更改VisualState。

我发现了我认为的解决方案Here,但此代码无法构建。

ListView
  

错误:无法将lambda表达式转换为类型'object',因为它是   不是代表类型

有谁知道如何让链接的解决方案有效?或者有一种更简单的方法,我完全不知道(我是一个XAML新手!)?

我甚至不确定列出的解决方案是否有效,因为“Snapped”与“Full”状态由模板附带的基本public class StateManager : DependencyObject { public static string GetVisualStateProperty(DependencyObject obj) { return (string)obj.GetValue(VisualStatePropertyProperty); } public static void SetVisualStateProperty(DependencyObject obj, string value) { obj.SetValue(VisualStatePropertyProperty, value); } public static readonly DependencyProperty VisualStatePropertyProperty = DependencyProperty.RegisterAttached( "VisualStateProperty", typeof(string), typeof(StateManager), new PropertyMetadata((s, e) => //this throws the error { var propertyName = (string)e.NewValue; var ctrl = s as Control; if (ctrl == null) throw new InvalidOperationException("This attached property only supports types derived from Control."); System.Windows.VisualStateManager.GoToState(ctrl, (string)e.NewValue, true); })); } 类管理。

1 个答案:

答案 0 :(得分:1)

为什么不简单地使用datatrigger绑定到像IsBusy {get; set;}这样的viewmodel属性来启用Progressring?