【问题标题】:UWP: Binding works on navigated to only, no updates in real timeUWP:绑定仅适用于导航到,没有实时更新
【发布时间】:2018-04-07 06:30:06
【问题描述】:

绑定运行良好,但属性更改不会触发更新。

所以,我的应用程序有一个复杂的数据模型,我必须从不同的页面访问它。因此,我通过我的 App.xaml.cs 保留了一个静态类——它工作正常。我正在尝试使用此数据模型通过另一帧中的 ColorPicker 更新一帧的背景颜色。虽然在导航到一个框架时绑定没有问题,但当两个框架彼此相邻时,我无法让它实时工作。 让我带你看一下代码……

<Grid Background="{x:Bind local:App.myData.BgColor, Converter={StaticResource StringToSolidColorBrushConverter}, Mode=OneWay}">
    <Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="SettingsColumn" />
        <ColumnDefinition x:Name="ContentColumn" />
    </Grid.ColumnDefinitions>

    <Frame Grid.Column="0" x:Name="SettingsFrame"></Frame>
    <Frame Grid.Column="1" x:Name="ContentFrame"></Frame>

</Grid>

MainPage.xaml - 在这里定义了两个框架,以及问题的背景颜色。我什至创建了一个转换器,实际上我似乎并不需要它。我可以说,转换器仅在帧启动时使用。相应的 cs 文件仅包含导航调用。

<Grid>
    <ColorPicker x:Name="BGColorPicker" 
                 Color="{x:Bind local:App.myData.BgColor, Mode=TwoWay}" />
</Grid>

SettingsPage.xaml – 这是带有绑定的 ColorPicker。我可以看到这会按预期更新数据模型。

问题似乎是,即使我的属性发生更改,绑定也不会在运行时更新背景颜色,仅在启动时更新。这是为什么?以及如何将其更改为实时更新?任何提示将不胜感激。

【问题讨论】:

  • 你在执行INotifyPropertyChanged 吗?
  • 我也遇到了同样的问题,没有找到其他解决方案,我使用ColorChanged事件而不是Binding
  • 你能分享你用于实际财产的代码吗?听起来您还没有实现 INotifyPropertyChanged 接口或使其成为依赖属性。
  • 如果您不了解 INotifyPropertyChanged 或依赖属性,您真的很想深入了解数据绑定文章:docs.microsoft.com/en-us/windows/uwp/data-binding/…

标签: c# data-binding uwp uwp-xaml


【解决方案1】:

“深度数据绑定”一文是缺失的链接。正如你们所有人所建议的,我需要实现INotifyPropertyChanged。感谢您的指点。然后我遇到了问题,不知何故整个事情创建了一个无限循环,我不得不将颜色选择器的绑定更改为 OneTime 并通过 ColorChanged 事件进行更新。现在它起作用了。非常感谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 2012-09-01
    相关资源
    最近更新 更多