private void UpdateIsSynchronizedWithCurrentItemInternal()
{
bool oldValue = IsSynchronizedWithCurrentItemInternal;
if (oldValue)
{
// Stop listening for currency changes
RemoveCurrentItemChangedListener();
}
bool? isSynchronizedWithCurrentItem = IsSynchronizedWithCurrentItem;
if (isSynchronizedWithCurrentItem.HasValue)
{
IsSynchronizedWithCurrentItemInternal = isSynchronizedWithCurrentItem.Value;
}
else
{
IsSynchronizedWithCurrentItemInternal = IsInitialized && (RibbonGallery.GetSourceCollectionView(this) != null);
}
bool newValue = IsSynchronizedWithCurrentItemInternal;
if (newValue)
{
// Listen for currency changes
AddCurrentItemChangedListener();
// Synchronize
SynchronizeWithCurrentItem();
}
if (oldValue != newValue)
{
// Notify categories
for (int i = 0; i < Items.Count; i++ )
{
RibbonGalleryCategory category = ItemContainerGenerator.ContainerFromIndex(i) as RibbonGalleryCategory;
if (category != null)
{
if (newValue)
{
category.AddCurrentItemChangedListener();
}
else
{
category.RemoveCurrentItemChangedListener();
}
}
}
}
}