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 中的集合将为空。成功加载图像后,我的 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 我的用户控件需要重新渲染?我知道在 WPF 中使用 FrameworkPropertyMedata.AffectsRender 是可能的,例如:

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 Store Xaml(在 Windows 8.1 中)只有 PropertyMetadata,但是在依赖属性的更改处理程序中,您仍然可以像在 WPF 中一样适当地调用InvalidateMeasureInvalidateArrangeUpdateLayout之一。

于 2014-11-09T16:37:05.850 回答