【发布时间】: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