Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Controls / ComboBoxItem.cs / 1 / ComboBoxItem.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: ComboBoxItem.cs // //--------------------------------------------------------------------------- using MS.Internal; using MS.Internal.KnownBoxes; using System; using System.ComponentModel; using System.Diagnostics; using System.Windows.Threading; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows.Media; using System.Windows.Input; using System.Windows.Controls.Primitives; using System.Windows.Shapes; namespace System.Windows.Controls { ////// Control that implements a selectable item inside a ComboBox. /// [Localizability(LocalizationCategory.ComboBox)] #if OLD_AUTOMATION [Automation(AccessibilityControlType = "ListItem")] #endif public class ComboBoxItem : ListBoxItem { //------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------- #region Constructors ////// Default DependencyObject constructor /// ////// Automatic determination of current Dispatcher. Use alternative constructor /// that accepts a Dispatcher for best performance. /// public ComboBoxItem() : base() { } static ComboBoxItem() { DefaultStyleKeyProperty.OverrideMetadata(typeof(ComboBoxItem), new FrameworkPropertyMetadata(typeof(ComboBoxItem))); _dType = DependencyObjectType.FromSystemTypeInternal(typeof(ComboBoxItem)); } #endregion #region Public Properties ////// The key needed set a read-only property. /// private static readonly DependencyPropertyKey IsHighlightedPropertyKey = DependencyProperty.RegisterReadOnly("IsHighlighted", typeof(bool), typeof(ComboBoxItem), new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); ////// DependencyProperty for the IsHighlighted property /// public static readonly DependencyProperty IsHighlightedProperty = IsHighlightedPropertyKey.DependencyProperty; ////// Indicates if the item is highlighted or not. Styles that want to /// show a highlight for selection should trigger off of this value. /// ///public bool IsHighlighted { get { return (bool)GetValue(IsHighlightedProperty); } protected set { SetValue(IsHighlightedPropertyKey, BooleanBoxes.Box(value)); } } #endregion //-------------------------------------------------------------------- // // Protected Methods // //------------------------------------------------------------------- #region Protected Methods /// /// This is the method that responds to the MouseButtonEvent event. /// /// Event arguments protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { e.Handled = true; ComboBox parent = ParentComboBox; if (parent != null) { parent.NotifyComboBoxItemMouseDown(this); } base.OnMouseLeftButtonDown(e); } ////// /// /// protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { e.Handled = true; ComboBox parent = ParentComboBox; if (parent != null) { parent.NotifyComboBoxItemMouseUp(this); } base.OnMouseLeftButtonUp(e); } ////// /// /// protected override void OnMouseEnter(MouseEventArgs e) { e.Handled = true; ComboBox parent = ParentComboBox; if (parent != null) { parent.NotifyComboBoxItemEnter(this); } base.OnMouseEnter(e); } ////// Called when Content property has been changed. /// /// /// protected override void OnContentChanged(object oldContent, object newContent) { base.OnContentChanged(oldContent, newContent); // If this is selected, we need to update ParentComboBox.Text // Scenario: //// // In this case ComboBox will try to update Text property as soon as it get // SelectionChanged event. However, at that time ComboBoxItem.Content is not // parse yet. So, Content is null. This causes ComboBox.Text to be "". // ComboBox parent; if (IsSelected && (null != (parent = ParentComboBox))) { parent.SelectedItemUpdated(); } // When the content of the combobox item is a UIElement, // combobox will create a visual clone of the item which needs // to update even when the combobox is closed SetFlags(newContent is UIElement, VisualFlags.IsLayoutIslandRoot); } ///item1 //Item2 //item3 ///// Called when this element gets focus. /// /// protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e) { e.Handled = true; ComboBox parent = ParentComboBox; if (parent != null) { parent.NotifyComboBoxItemEnter(this); } base.OnGotKeyboardFocus(e); } #endregion //-------------------------------------------------------------------- // // Implementation // //-------------------------------------------------------------------- #region Implementation private ComboBox ParentComboBox { get { return ParentSelector as ComboBox; } } internal void SetIsHighlighted(bool isHighlighted) { IsHighlighted = isHighlighted; } #endregion #region DTypeThemeStyleKey // Returns the DependencyObjectType for the registered ThemeStyleKey's default // value. Controls will override this method to return approriate types. internal override DependencyObjectType DTypeThemeStyleKey { get { return _dType; } } private static DependencyObjectType _dType; #endregion DTypeThemeStyleKey } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: ComboBoxItem.cs // //--------------------------------------------------------------------------- using MS.Internal; using MS.Internal.KnownBoxes; using System; using System.ComponentModel; using System.Diagnostics; using System.Windows.Threading; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows.Media; using System.Windows.Input; using System.Windows.Controls.Primitives; using System.Windows.Shapes; namespace System.Windows.Controls { ////// Control that implements a selectable item inside a ComboBox. /// [Localizability(LocalizationCategory.ComboBox)] #if OLD_AUTOMATION [Automation(AccessibilityControlType = "ListItem")] #endif public class ComboBoxItem : ListBoxItem { //------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------- #region Constructors ////// Default DependencyObject constructor /// ////// Automatic determination of current Dispatcher. Use alternative constructor /// that accepts a Dispatcher for best performance. /// public ComboBoxItem() : base() { } static ComboBoxItem() { DefaultStyleKeyProperty.OverrideMetadata(typeof(ComboBoxItem), new FrameworkPropertyMetadata(typeof(ComboBoxItem))); _dType = DependencyObjectType.FromSystemTypeInternal(typeof(ComboBoxItem)); } #endregion #region Public Properties ////// The key needed set a read-only property. /// private static readonly DependencyPropertyKey IsHighlightedPropertyKey = DependencyProperty.RegisterReadOnly("IsHighlighted", typeof(bool), typeof(ComboBoxItem), new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); ////// DependencyProperty for the IsHighlighted property /// public static readonly DependencyProperty IsHighlightedProperty = IsHighlightedPropertyKey.DependencyProperty; ////// Indicates if the item is highlighted or not. Styles that want to /// show a highlight for selection should trigger off of this value. /// ///public bool IsHighlighted { get { return (bool)GetValue(IsHighlightedProperty); } protected set { SetValue(IsHighlightedPropertyKey, BooleanBoxes.Box(value)); } } #endregion //-------------------------------------------------------------------- // // Protected Methods // //------------------------------------------------------------------- #region Protected Methods /// /// This is the method that responds to the MouseButtonEvent event. /// /// Event arguments protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { e.Handled = true; ComboBox parent = ParentComboBox; if (parent != null) { parent.NotifyComboBoxItemMouseDown(this); } base.OnMouseLeftButtonDown(e); } ////// /// /// protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { e.Handled = true; ComboBox parent = ParentComboBox; if (parent != null) { parent.NotifyComboBoxItemMouseUp(this); } base.OnMouseLeftButtonUp(e); } ////// /// /// protected override void OnMouseEnter(MouseEventArgs e) { e.Handled = true; ComboBox parent = ParentComboBox; if (parent != null) { parent.NotifyComboBoxItemEnter(this); } base.OnMouseEnter(e); } ////// Called when Content property has been changed. /// /// /// protected override void OnContentChanged(object oldContent, object newContent) { base.OnContentChanged(oldContent, newContent); // If this is selected, we need to update ParentComboBox.Text // Scenario: //// // In this case ComboBox will try to update Text property as soon as it get // SelectionChanged event. However, at that time ComboBoxItem.Content is not // parse yet. So, Content is null. This causes ComboBox.Text to be "". // ComboBox parent; if (IsSelected && (null != (parent = ParentComboBox))) { parent.SelectedItemUpdated(); } // When the content of the combobox item is a UIElement, // combobox will create a visual clone of the item which needs // to update even when the combobox is closed SetFlags(newContent is UIElement, VisualFlags.IsLayoutIslandRoot); } ///item1 //Item2 //item3 ///// Called when this element gets focus. /// /// protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e) { e.Handled = true; ComboBox parent = ParentComboBox; if (parent != null) { parent.NotifyComboBoxItemEnter(this); } base.OnGotKeyboardFocus(e); } #endregion //-------------------------------------------------------------------- // // Implementation // //-------------------------------------------------------------------- #region Implementation private ComboBox ParentComboBox { get { return ParentSelector as ComboBox; } } internal void SetIsHighlighted(bool isHighlighted) { IsHighlighted = isHighlighted; } #endregion #region DTypeThemeStyleKey // Returns the DependencyObjectType for the registered ThemeStyleKey's default // value. Controls will override this method to return approriate types. internal override DependencyObjectType DTypeThemeStyleKey { get { return _dType; } } private static DependencyObjectType _dType; #endregion DTypeThemeStyleKey } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DbDeleteCommandTree.cs
- SqlReorderer.cs
- ResolveInfo.cs
- MaskDescriptors.cs
- TdsParserHelperClasses.cs
- RectAnimationBase.cs
- Path.cs
- WebPartManager.cs
- ProcessRequestArgs.cs
- RegexCode.cs
- metrodevice.cs
- DataGrid.cs
- Gdiplus.cs
- ResourcesChangeInfo.cs
- ToolStripSettings.cs
- Verify.cs
- TraversalRequest.cs
- VirtualizingStackPanel.cs
- OleDbConnection.cs
- documentsequencetextpointer.cs
- CancellationTokenRegistration.cs
- shaperfactoryquerycachekey.cs
- _AutoWebProxyScriptHelper.cs
- DataGridViewRowConverter.cs
- SerializationInfoEnumerator.cs
- HostedTransportConfigurationManager.cs
- Int32CAMarshaler.cs
- DefaultClaimSet.cs
- ServerIdentity.cs
- ContextMenu.cs
- DynamicUpdateCommand.cs
- ResourceBinder.cs
- Helper.cs
- precedingquery.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- HttpContextServiceHost.cs
- FixedSOMTable.cs
- CatalogPartCollection.cs
- WriteableBitmap.cs
- PropertyDescriptorGridEntry.cs
- RawStylusInputCustomData.cs
- TableTextElementCollectionInternal.cs
- InkCanvas.cs
- DataServiceQuery.cs
- SpeechAudioFormatInfo.cs
- TextTreeUndoUnit.cs
- ReceiveActivity.cs
- CapabilitiesAssignment.cs
- CodeMemberField.cs
- Contracts.cs
- DisplayMemberTemplateSelector.cs
- LayoutExceptionEventArgs.cs
- SinglePageViewer.cs
- FontSource.cs
- WebPartConnectionsEventArgs.cs
- WebPartConnectionsEventArgs.cs
- ContourSegment.cs
- Clipboard.cs
- DockPanel.cs
- CorePropertiesFilter.cs
- RelatedCurrencyManager.cs
- CaseInsensitiveComparer.cs
- StringInfo.cs
- DecodeHelper.cs
- TaiwanCalendar.cs
- DoWhileDesigner.xaml.cs
- GridViewColumnHeader.cs
- CryptoKeySecurity.cs
- HTMLTagNameToTypeMapper.cs
- SelectionHighlightInfo.cs
- DataSourceCache.cs
- InfoCardBinaryReader.cs
- PathTooLongException.cs
- DataRow.cs
- SmiMetaData.cs
- RegistryPermission.cs
- AnimationStorage.cs
- LayeredChannelListener.cs
- PocoPropertyAccessorStrategy.cs
- RuntimeWrappedException.cs
- MetadataExchangeBindings.cs
- assemblycache.cs
- WebBrowserContainer.cs
- NavigationWindowAutomationPeer.cs
- IconConverter.cs
- ImageFormatConverter.cs
- QilDataSource.cs
- AnimatedTypeHelpers.cs
- LZCodec.cs
- EffectiveValueEntry.cs
- QuaternionConverter.cs
- ClientRolePrincipal.cs
- AuthorizationRule.cs
- OuterGlowBitmapEffect.cs
- PostBackOptions.cs
- HttpConfigurationContext.cs
- RegexMatch.cs
- DataGridView.cs
- SafeEventLogWriteHandle.cs
- ByteViewer.cs