Windows 8 ストア アプリ (グリッド アプリ テンプレートを使用) に取り組んでおり、サーバーからデータを読み込んでいる間ProgressRing
、GridView
またはListView
(アプリがスナップされているかどうかによって異なります) を表示したり非表示にしたりします。完全にロードされたデータ。
問題は、ViewModel がデータをロードしているときに、VisualState を変更できる必要があることです。
解決策だと思っていたものがここに見つかりましたが、このコードはビルドされません。
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);
}));
}
エラー: デリゲート型ではないため、ラムダ式を型 'object' に変換できません
リンクされたソリューションを機能させる方法を知っている人はいますか? または、私が完全に見逃している簡単な方法はありますか (私は XAML 初心者です!)?
「Snapped」と「Full」の状態はLayoutAwarePage
、テンプレートに含まれる基本クラスによって管理されるため、リストされているソリューションが機能するかどうかさえわかりません。