UWP:绑定工作仅导航到,不实时更新

时间:2018-04-07 06:30:06

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

绑定效果很好,但是在更改属性时不会触发更新。

所以,我的应用程序有一个复杂的数据模型,我必须从不同的页面访问。因此,我通过我的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。我可以看到这会按预期更新数据模型。

问题似乎是,即使我的属性发生了变化,绑定也不会在运行时更新背景颜色,仅在启动时更新。这是为什么?我怎样才能将其更改为实时更新?任何提示都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

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