我正在使用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);
}));
}
类管理。
答案 0 :(得分:1)
为什么不简单地使用datatrigger绑定到像IsBusy {get; set;}这样的viewmodel属性来启用Progressring?