Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / ComboBoxAutomationPeer.cs / 1305600 / ComboBoxAutomationPeer.cs
using System; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security; using System.Text; using System.Windows; using System.Windows.Automation.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Threading; using MS.Internal; using MS.Win32; namespace System.Windows.Automation.Peers { /// public class ComboBoxAutomationPeer: SelectorAutomationPeer, IValueProvider, IExpandCollapseProvider { /// public ComboBoxAutomationPeer(ComboBox owner): base(owner) {} /// override protected ItemAutomationPeer CreateItemAutomationPeer(object item) { // Use the same peer as ListBox return new ListBoxItemAutomationPeer(item, this); } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.ComboBox; } /// override protected string GetClassNameCore() { return "ComboBox"; } /// override public object GetPattern(PatternInterface pattern) { object iface = null; if (pattern == PatternInterface.Value) { ComboBox owner = (ComboBox)Owner; if (owner.IsEditable) iface = this; } else if(pattern == PatternInterface.ExpandCollapse) { iface = this; } else { iface = base.GetPattern(pattern); } return iface; } /// protected override ListGetChildrenCore() { List children = base.GetChildrenCore(); // include text box part into children collection ComboBox owner = (ComboBox)Owner; TextBox textBox = owner.EditableTextBoxSite; if (textBox != null) { AutomationPeer peer = UIElementAutomationPeer.CreatePeerForElement(textBox); if (peer != null) { if (children == null) children = new List (); children.Insert(0, peer); } } return children; } /// protected override void SetFocusCore() { ComboBox owner = (ComboBox)Owner; if (owner.Focusable) { if (!owner.Focus()) { //The fox might have went to the TextBox inside Combobox if it is editable. if (owner.IsEditable) { TextBox tb = owner.EditableTextBoxSite; if (tb == null || !tb.IsKeyboardFocused) throw new InvalidOperationException(SR.Get(SRID.SetFocusFailed)); } else throw new InvalidOperationException(SR.Get(SRID.SetFocusFailed)); } } else { throw new InvalidOperationException(SR.Get(SRID.SetFocusFailed)); } } /// internal void ScrollItemIntoView(object item) { // Item can be scrolled into view only when the Combo is expanded. // if(((IExpandCollapseProvider)this).ExpandCollapseState == ExpandCollapseState.Expanded) { ComboBox owner = (ComboBox)Owner; if (owner.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated) { owner.OnBringItemIntoView(item); } else { // The items aren't generated, try at a later time Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new DispatcherOperationCallback(owner.OnBringItemIntoView), item); } } } #region Value /// /// Request to set the value that this UI element is representing /// /// Value to set the UI to, as an object ///true if the UI element was successfully set to the specified value //[CodeAnalysis("AptcaMethodsShouldOnlyCallAptcaMethods")] //Tracking Bug: 29647 void IValueProvider.SetValue(string val) { if (val == null) throw new ArgumentNullException("val"); ComboBox owner = (ComboBox)Owner; if (!owner.IsEnabled) throw new ElementNotEnabledException(); owner.SetCurrentValueInternal(ComboBox.TextProperty, val); } ///Value of a value control, as a a string. string IValueProvider.Value { get { return ((ComboBox)(((ComboBoxAutomationPeer)this).Owner)).Text; } } ///Indicates that the value can only be read, not modified. ///returns True if the control is read-only bool IValueProvider.IsReadOnly { get { ComboBox owner = (ComboBox)Owner; return !owner.IsEnabled || owner.IsReadOnly; } } // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] internal void RaiseValuePropertyChangedEvent(string oldValue, string newValue) { if (oldValue != newValue) { RaisePropertyChangedEvent(ValuePatternIdentifiers.ValueProperty, oldValue, newValue); } } #endregion Value #region ExpandCollapse ////// Blocking method that returns after the element has been expanded. /// ///true if the node was successfully expanded void IExpandCollapseProvider.Expand() { if(!IsEnabled()) throw new ElementNotEnabledException(); ComboBox owner = (ComboBox)((ComboBoxAutomationPeer)this).Owner; owner.SetCurrentValueInternal(ComboBox.IsDropDownOpenProperty, MS.Internal.KnownBoxes.BooleanBoxes.TrueBox); } ////// Blocking method that returns after the element has been collapsed. /// ///true if the node was successfully collapsed void IExpandCollapseProvider.Collapse() { if(!IsEnabled()) throw new ElementNotEnabledException(); ComboBox owner = (ComboBox)((ComboBoxAutomationPeer)this).Owner; owner.SetCurrentValueInternal(ComboBox.IsDropDownOpenProperty, MS.Internal.KnownBoxes.BooleanBoxes.FalseBox); } ///indicates an element's current Collapsed or Expanded state ExpandCollapseState IExpandCollapseProvider.ExpandCollapseState { get { ComboBox owner = (ComboBox)((ComboBoxAutomationPeer)this).Owner; return owner.IsDropDownOpen ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed; } } // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] internal void RaiseExpandCollapseAutomationEvent(bool oldValue, bool newValue) { RaisePropertyChangedEvent( ExpandCollapsePatternIdentifiers.ExpandCollapseStateProperty, oldValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed, newValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed); } #endregion ExpandCollapse } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security; using System.Text; using System.Windows; using System.Windows.Automation.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Threading; using MS.Internal; using MS.Win32; namespace System.Windows.Automation.Peers { /// public class ComboBoxAutomationPeer: SelectorAutomationPeer, IValueProvider, IExpandCollapseProvider { /// public ComboBoxAutomationPeer(ComboBox owner): base(owner) {} /// override protected ItemAutomationPeer CreateItemAutomationPeer(object item) { // Use the same peer as ListBox return new ListBoxItemAutomationPeer(item, this); } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.ComboBox; } /// override protected string GetClassNameCore() { return "ComboBox"; } /// override public object GetPattern(PatternInterface pattern) { object iface = null; if (pattern == PatternInterface.Value) { ComboBox owner = (ComboBox)Owner; if (owner.IsEditable) iface = this; } else if(pattern == PatternInterface.ExpandCollapse) { iface = this; } else { iface = base.GetPattern(pattern); } return iface; } /// protected override ListGetChildrenCore() { List children = base.GetChildrenCore(); // include text box part into children collection ComboBox owner = (ComboBox)Owner; TextBox textBox = owner.EditableTextBoxSite; if (textBox != null) { AutomationPeer peer = UIElementAutomationPeer.CreatePeerForElement(textBox); if (peer != null) { if (children == null) children = new List (); children.Insert(0, peer); } } return children; } /// protected override void SetFocusCore() { ComboBox owner = (ComboBox)Owner; if (owner.Focusable) { if (!owner.Focus()) { //The fox might have went to the TextBox inside Combobox if it is editable. if (owner.IsEditable) { TextBox tb = owner.EditableTextBoxSite; if (tb == null || !tb.IsKeyboardFocused) throw new InvalidOperationException(SR.Get(SRID.SetFocusFailed)); } else throw new InvalidOperationException(SR.Get(SRID.SetFocusFailed)); } } else { throw new InvalidOperationException(SR.Get(SRID.SetFocusFailed)); } } /// internal void ScrollItemIntoView(object item) { // Item can be scrolled into view only when the Combo is expanded. // if(((IExpandCollapseProvider)this).ExpandCollapseState == ExpandCollapseState.Expanded) { ComboBox owner = (ComboBox)Owner; if (owner.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated) { owner.OnBringItemIntoView(item); } else { // The items aren't generated, try at a later time Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new DispatcherOperationCallback(owner.OnBringItemIntoView), item); } } } #region Value /// /// Request to set the value that this UI element is representing /// /// Value to set the UI to, as an object ///true if the UI element was successfully set to the specified value //[CodeAnalysis("AptcaMethodsShouldOnlyCallAptcaMethods")] //Tracking Bug: 29647 void IValueProvider.SetValue(string val) { if (val == null) throw new ArgumentNullException("val"); ComboBox owner = (ComboBox)Owner; if (!owner.IsEnabled) throw new ElementNotEnabledException(); owner.SetCurrentValueInternal(ComboBox.TextProperty, val); } ///Value of a value control, as a a string. string IValueProvider.Value { get { return ((ComboBox)(((ComboBoxAutomationPeer)this).Owner)).Text; } } ///Indicates that the value can only be read, not modified. ///returns True if the control is read-only bool IValueProvider.IsReadOnly { get { ComboBox owner = (ComboBox)Owner; return !owner.IsEnabled || owner.IsReadOnly; } } // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] internal void RaiseValuePropertyChangedEvent(string oldValue, string newValue) { if (oldValue != newValue) { RaisePropertyChangedEvent(ValuePatternIdentifiers.ValueProperty, oldValue, newValue); } } #endregion Value #region ExpandCollapse ////// Blocking method that returns after the element has been expanded. /// ///true if the node was successfully expanded void IExpandCollapseProvider.Expand() { if(!IsEnabled()) throw new ElementNotEnabledException(); ComboBox owner = (ComboBox)((ComboBoxAutomationPeer)this).Owner; owner.SetCurrentValueInternal(ComboBox.IsDropDownOpenProperty, MS.Internal.KnownBoxes.BooleanBoxes.TrueBox); } ////// Blocking method that returns after the element has been collapsed. /// ///true if the node was successfully collapsed void IExpandCollapseProvider.Collapse() { if(!IsEnabled()) throw new ElementNotEnabledException(); ComboBox owner = (ComboBox)((ComboBoxAutomationPeer)this).Owner; owner.SetCurrentValueInternal(ComboBox.IsDropDownOpenProperty, MS.Internal.KnownBoxes.BooleanBoxes.FalseBox); } ///indicates an element's current Collapsed or Expanded state ExpandCollapseState IExpandCollapseProvider.ExpandCollapseState { get { ComboBox owner = (ComboBox)((ComboBoxAutomationPeer)this).Owner; return owner.IsDropDownOpen ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed; } } // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] internal void RaiseExpandCollapseAutomationEvent(bool oldValue, bool newValue) { RaisePropertyChangedEvent( ExpandCollapsePatternIdentifiers.ExpandCollapseStateProperty, oldValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed, newValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed); } #endregion ExpandCollapse } } // 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
- StrokeSerializer.cs
- GenericIdentity.cs
- ViewCellSlot.cs
- WindowsListViewGroup.cs
- Emitter.cs
- SystemUnicastIPAddressInformation.cs
- CrossContextChannel.cs
- DES.cs
- GridViewRowPresenter.cs
- PropertySourceInfo.cs
- ChannelProtectionRequirements.cs
- xmlglyphRunInfo.cs
- HashAlgorithm.cs
- TraceHwndHost.cs
- TypeConstant.cs
- _SecureChannel.cs
- MulticastOption.cs
- HWStack.cs
- HostingEnvironmentSection.cs
- SqlConnectionFactory.cs
- Scheduler.cs
- ReflectTypeDescriptionProvider.cs
- JsonFormatWriterGenerator.cs
- Int64Storage.cs
- _ChunkParse.cs
- XmlTextEncoder.cs
- DrawingCollection.cs
- ToolBarButtonDesigner.cs
- FlowDocumentPageViewerAutomationPeer.cs
- MasterPageBuildProvider.cs
- CodeAccessPermission.cs
- CounterCreationDataCollection.cs
- TraceListeners.cs
- ApplicationHost.cs
- ListDataHelper.cs
- _FtpDataStream.cs
- XPathEmptyIterator.cs
- ListViewItemCollectionEditor.cs
- EncoderFallback.cs
- DTCTransactionManager.cs
- DbCommandDefinition.cs
- DateTimePicker.cs
- URLIdentityPermission.cs
- MemoryMappedView.cs
- DataGridColumnDropSeparator.cs
- DateTimeOffsetConverter.cs
- DataReceivedEventArgs.cs
- MachineKeySection.cs
- ToolStripMenuItem.cs
- UnSafeCharBuffer.cs
- TaskFileService.cs
- ValidationHelpers.cs
- ContentPosition.cs
- DataGridViewLayoutData.cs
- ColorContextHelper.cs
- SortedDictionary.cs
- PolicyLevel.cs
- DataGridViewRowHeaderCell.cs
- AmbientProperties.cs
- DbDataReader.cs
- SharedStatics.cs
- DbProviderServices.cs
- BinarySecretKeyIdentifierClause.cs
- AsymmetricSignatureFormatter.cs
- XmlAttributeCache.cs
- ResizingMessageFilter.cs
- MobileUserControl.cs
- ProfileProvider.cs
- LongValidatorAttribute.cs
- DbgUtil.cs
- XmlSchemaNotation.cs
- PrintPreviewControl.cs
- TraceShell.cs
- DataPagerCommandEventArgs.cs
- ProcessHostFactoryHelper.cs
- DataListItemCollection.cs
- HybridObjectCache.cs
- ToolBarPanel.cs
- PageEventArgs.cs
- ScriptRegistrationManager.cs
- PersonalizationStateInfoCollection.cs
- CorrelationTokenInvalidatedHandler.cs
- DataGridHyperlinkColumn.cs
- CommittableTransaction.cs
- WebProxyScriptElement.cs
- SqlUnionizer.cs
- OLEDB_Util.cs
- sortedlist.cs
- EntityContainerEntitySet.cs
- EditorZone.cs
- TableDetailsCollection.cs
- AssemblyFilter.cs
- FormViewDeletedEventArgs.cs
- EventBuilder.cs
- TextParagraphProperties.cs
- DownloadProgressEventArgs.cs
- ProviderCommandInfoUtils.cs
- OpCellTreeNode.cs
- EventWaitHandle.cs
- OdbcParameterCollection.cs