绑定效果很好,但是在更改属性时不会触发更新。
所以,我的应用程序有一个复杂的数据模型,我必须从不同的页面访问。因此,我通过我的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。我可以看到这会按预期更新数据模型。
问题似乎是,即使我的属性发生了变化,绑定也不会在运行时更新背景颜色,仅在启动时更新。这是为什么?我怎样才能将其更改为实时更新?任何提示都将受到高度赞赏。
答案 0 :(得分:0)
“深度数据绑定”一文是缺失的链接。正如你们所建议的那样,我需要实施INotifyPropertyChanged
。谢谢你的指点。然后我遇到了问题,不知怎的,整个事情创建了一个无限循环,我不得不将颜色选择器的绑定更改为OneTime
并通过ColorChanged
事件进行更新。现在它有效。非常感谢大家!