public static object CoerceKeyTip(ISyncKeyTipAndContent syncElement, object baseValue, DependencyProperty contentProperty) { DependencyObject element = syncElement as DependencyObject; Debug.Assert(element != null); if (syncElement.KeepKeyTipAndContentInSync && !syncElement.IsKeyTipSyncSource) { syncElement.KeepKeyTipAndContentInSync = false; if (string.IsNullOrEmpty((string)baseValue)) { string stringContent = element.GetValue(contentProperty) as string; if (stringContent != null) { int accessIndex = RibbonHelper.FindAccessKeyMarker(stringContent); if (accessIndex >= 0 && accessIndex < stringContent.Length - 1) { syncElement.KeepKeyTipAndContentInSync = true; return StringInfo.GetNextTextElement(stringContent, accessIndex + 1); } } } } return baseValue; }
public static object CoerceKeyTip(ISyncKeyTipAndContent syncElement, object baseValue, DependencyProperty contentProperty) { DependencyObject element = syncElement as DependencyObject; Debug.Assert(element != null); if (syncElement.KeepKeyTipAndContentInSync && !syncElement.IsKeyTipSyncSource) { syncElement.KeepKeyTipAndContentInSync = false; if (string.IsNullOrEmpty((string)baseValue)) { string stringContent = element.GetValue(contentProperty) as string; if (stringContent != null) { int accessIndex = RibbonHelper.FindAccessKeyMarker(stringContent); if (accessIndex >= 0 && accessIndex < stringContent.Length - 1) { syncElement.KeepKeyTipAndContentInSync = true; return(StringInfo.GetNextTextElement(stringContent, accessIndex + 1)); } } } } return(baseValue); }
public static object CoerceContentProperty(ISyncKeyTipAndContent syncElement, object baseValue) { DependencyObject element = syncElement as DependencyObject; Debug.Assert(element != null); if (syncElement.KeepKeyTipAndContentInSync && syncElement.IsKeyTipSyncSource) { syncElement.KeepKeyTipAndContentInSync = false; string stringContent = baseValue as string; if (stringContent != null) { if (RibbonHelper.FindAccessKeyMarker(stringContent) < 0) { string keyTip = KeyTipService.GetKeyTip(element); if (!string.IsNullOrEmpty(keyTip) && keyTip.Length > 0) { int accessorIndex = stringContent.IndexOf(keyTip[0]); if (accessorIndex >= 0) { syncElement.KeepKeyTipAndContentInSync = true; return stringContent.Substring(0, accessorIndex) + '_' + stringContent.Substring(accessorIndex); } } } } } return baseValue; }
public static object CoerceContentProperty(ISyncKeyTipAndContent syncElement, object baseValue) { DependencyObject element = syncElement as DependencyObject; Debug.Assert(element != null); if (syncElement.KeepKeyTipAndContentInSync && syncElement.IsKeyTipSyncSource) { syncElement.KeepKeyTipAndContentInSync = false; string stringContent = baseValue as string; if (stringContent != null) { if (RibbonHelper.FindAccessKeyMarker(stringContent) < 0) { string keyTip = KeyTipService.GetKeyTip(element); if (!string.IsNullOrEmpty(keyTip) && keyTip.Length > 0) { int accessorIndex = stringContent.IndexOf(keyTip[0]); if (accessorIndex >= 0) { syncElement.KeepKeyTipAndContentInSync = true; return(stringContent.Substring(0, accessorIndex) + '_' + stringContent.Substring(accessorIndex)); } } } } } return(baseValue); }
public static void Sync(ISyncKeyTipAndContent syncElement, DependencyProperty contentProperty) { if (syncElement.SyncingKeyTipAndContent) { return; } DependencyObject element = syncElement as DependencyObject; Debug.Assert(element != null); try { syncElement.SyncingKeyTipAndContent = true; if (!syncElement.KeepKeyTipAndContentInSync) { string keyTip = KeyTipService.GetKeyTip(element); bool isKeyTipSet = !string.IsNullOrEmpty(keyTip); string stringContent = element.GetValue(contentProperty) as string; if (stringContent != null) { int accessKeyIndex = RibbonHelper.FindAccessKeyMarker(stringContent); if (isKeyTipSet) { if (accessKeyIndex == -1) { int accessorIndex = stringContent.IndexOf(keyTip[0]); if (accessorIndex != -1) { syncElement.KeepKeyTipAndContentInSync = true; syncElement.IsKeyTipSyncSource = true; } } } else if (accessKeyIndex != -1) { syncElement.KeepKeyTipAndContentInSync = true; syncElement.IsKeyTipSyncSource = false; } } } element.CoerceValue(contentProperty); element.CoerceValue(KeyTipService.KeyTipProperty); } finally { syncElement.SyncingKeyTipAndContent = false; } }
public static void OnKeyTipChanged(ISyncKeyTipAndContent syncElement, DependencyProperty contentProperty) { DependencyObject element = syncElement as DependencyObject; Debug.Assert(element != null); if (!syncElement.SyncingKeyTipAndContent) { if (syncElement.KeepKeyTipAndContentInSync) { syncElement.KeepKeyTipAndContentInSync = false; if (syncElement.IsKeyTipSyncSource) { element.CoerceValue(contentProperty); } } Sync(syncElement, contentProperty); } }
public static void Sync(ISyncKeyTipAndContent syncElement, DependencyProperty contentProperty) { if (syncElement.SyncingKeyTipAndContent) { return; } DependencyObject element = syncElement as DependencyObject; Debug.Assert(element != null); try { syncElement.SyncingKeyTipAndContent = true; if (!syncElement.KeepKeyTipAndContentInSync) { string keyTip = KeyTipService.GetKeyTip(element); bool isKeyTipSet = !string.IsNullOrEmpty(keyTip); string stringContent = element.GetValue(contentProperty) as string; if (stringContent != null) { int accessKeyIndex = RibbonHelper.FindAccessKeyMarker(stringContent); if (isKeyTipSet) { if (accessKeyIndex == -1) { int accessorIndex = stringContent.IndexOf(keyTip[0]); if (accessorIndex != -1) { syncElement.KeepKeyTipAndContentInSync = true; syncElement.IsKeyTipSyncSource = true; } } } else if (accessKeyIndex != -1) { syncElement.KeepKeyTipAndContentInSync = true; syncElement.IsKeyTipSyncSource = false; } } } element.CoerceValue(contentProperty); element.CoerceValue(KeyTipService.KeyTipProperty); } finally { syncElement.SyncingKeyTipAndContent = false; } }
public static void OnKeyTipChanged(ISyncKeyTipAndContent syncElement, DependencyProperty contentProperty) { DependencyObject element = syncElement as DependencyObject; Debug.Assert(element != null); if (!syncElement.SyncingKeyTipAndContent) { if (syncElement.KeepKeyTipAndContentInSync) { syncElement.KeepKeyTipAndContentInSync = false; if (syncElement.IsKeyTipSyncSource) { element.CoerceValue(contentProperty); } } Sync(syncElement, contentProperty); } }