0

Windows 8 ストア アプリ (グリッド アプリ テンプレートを使用) に取り組んでおり、サーバーからデータを読み込んでいる間ProgressRingGridViewまたは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、テンプレートに含まれる基本クラスによって管理されるため、リストされているソリューションが機能するかどうかさえわかりません。

4

1 に答える 1

1

IsBusy {get;set;} のようなビューモデル プロパティへの datatrigger バインドを単純に使用して、Progressring を有効にしてみませんか?

于 2013-05-24T07:46:19.280 に答える