2

まず、Flipview を使用して Windows ストア アプリケーションを構築しています。このブログで見つけられる最初の例と同様のカスタム コンテキスト インジケーターを作成しました: http://blogs.u2u.be/diederik/post/2012 /08/24/A-CXAML-FlipView-Context-Indicator-for-Windows-8.aspx 簡単 に言うと、依存関係プロパティを使用して、フリップビューをユーザー コントロールにバインドします。

私の問題: コンテキスト インジケーターに使用するフリップビューは、DefaultViewModel にデータバインドされています。フリップビューの画像は Web API から取得するため、ページが読み込まれると、DefaultViewModel のコレクションは null になります。画像を正常にロードした後、私の DefaultViewModel["collection"] が満たされ、それに応じてフリップビューに画像が表示されます。ただし、コンテキスト インジケーターは変更されず、ページが再度読み込まれた場合にのみ正しい結果が表示されます。

私のユーザーコントロールの依存関係プロパティは次のとおりです。

public static readonly DependencyProperty FlipviewProperty =
        DependencyProperty.Register("Flipview", typeof(FlipView), typeof(FlipviewIndicator), new PropertyMetadata(null, FlipView_Changed));

    private static void FlipView_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        FlipviewIndicator indicator = d as FlipviewIndicator;
        FlipView flipview = (e.NewValue as FlipView);
        indicator.ItemsSource = flipview.ItemsSource;
        Binding binding = new Binding();
        binding.Mode = BindingMode.TwoWay;
        binding.Source = flipview;
        binding.Path = new PropertyPath("SelectedItem");
        indicator.SetBinding(FlipviewIndicator.SelectedItemProperty, binding);
    }

私の質問:依存関係プロパティに、ユーザー コントロールを再レンダリングする必要があることを UI に通知させる方法はありますか? FrameworkPropertyMedata.AffectsRender を次のように使用することで、WPF で可能であることがわかっています。

public static readonly DependencyProperty FlipviewProperty = DependencyProperty.Register("Flipview",typeof(Flipview),typeof(FlipviewIndicator), new FrameworkPropertyMetadata(new Color(), FrameworkPropertyMetadataOptions.AffectsRender));

ただし、Windows ストア アプリでは FrameworkPropertyMedata はサポートされなくなりました。ストア アプリに同等のものはありますか?

前もって感謝します!

4

1 に答える 1

0

古い質問ですが、短い答えはノーです。Windows ストア Xaml (Windows 8.1 と同様) には PropertyMetadata しかありませんが、依存関係プロパティの変更されたハンドラーでは、WPF のようにInvalidateMeasureInvalidateArrangeまたはUpdateLayoutのいずれかを適切に呼び出すことができます。

于 2014-11-09T16:37:05.850 に答える