Xaml UserControl上的DataContext更改未更新子控件';s属性

Xaml UserControl上的DataContext更改未更新子控件';s属性,xaml,binding,windows-phone-8,Xaml,Binding,Windows Phone 8,我有一个简单的控件: <UserControl x:Class="MyProject.Controls.ImageToggleButton" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://

我有一个简单的控件:

<UserControl x:Class="MyProject.Controls.ImageToggleButton"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             d:DesignHeight="480"
             d:DesignWidth="480"
             Loaded="OnLoaded"
             Tap="OnTap"
             Background="{x:Null}">

    <Image x:Name='ButtonImage' />
</UserControl>
此控件包含在另一个
UserControl
中,该控件用作
LongListSelector.ItemTemplate
DataTemplate

(Some xaml snipped for brevity...)
<UserControl ...>
    <Grid>
        <controls:ImageToggleButton Grid.Column="0"
                                    CheckedImage="/Assets/icon_checked.png"
                                    UncheckedImage="/Assets/icon_unchecked.png"
                                    IsChecked="{Binding Store.IsSelected}"
                                    Height="48" />
    </Grid>
</UserControl>

我的问题是,当
LongListSelector
为父控件设置新的
DataContext
时,
IsChecked
值在图像上没有正确更新。

在应用程序运行该特定代码段时检查调试输出。您没有看到任何绑定错误吗?另外,我假设您的视图模型实现了INotifyPropertyChanged(正确更改)?没有绑定错误,并且VM派生自
NotificationObject
,并实现了
Store
s属性的集合。请尝试使用Snoop()检查ImageToggleButton的数据上下文。看起来您的DataContext将被正确继承(除非您在这里没有看到的代码中显式/本地地设置它)。我们可以看到从IsSelected的setter调用的this.Set方法的实现吗(我没有看到它是NotificationObject的成员,所以我假设是您编写的)?
(Some xaml snipped for brevity...)
<UserControl ...>
    <Grid>
        <controls:ImageToggleButton Grid.Column="0"
                                    CheckedImage="/Assets/icon_checked.png"
                                    UncheckedImage="/Assets/icon_unchecked.png"
                                    IsChecked="{Binding Store.IsSelected}"
                                    Height="48" />
    </Grid>
</UserControl>
public class Store : NotificationObject
{
    private bool isSelected;
    public bool IsSelected
    {
        get { return isSelected; }
        set { this.Set(() => IsSelected, ref IsSelected, value); }
    }
}