MaterialDesignThemes.Wpf This is a simple utility to add and remove a single adorner to an element since there is no built-in way to do that in xaml. See here Controls the corner radius of the surrounding box. Provides culture-specific information about the format of calendar. Gets the custom format string for a year and month value. Gets the custom format string for a component one value. Gets the custom format string for a component two value. Gets the custom format string for a component three value. Sets the culture-specific custom format string for a year value. An array of string that specify the name of culture to set the for. The custom format string for a year value. If null, culture-specific custom format string for a year value is removed. is null. Sets the culture-specific custom format string for a year value. A string that specify the name of culture to set the for. The custom format string for a year value. If null, culture-specific custom format string for a year value is removed. is null. Sets the culture-specific day of week style. An array of string that specify the name of culture to set the for. A to be set. is null. Sets the culture-specific day of week style. A string that specify the name of culture to set the for. A to be set. is null. Resets the culture-specific day of week style to default value. An array of string that specify the name of culture to reset. is null. Resets the culture-specific day of week style to default value. A string that specify the name of culture to reset. is null. Creates a from the . A that specifies the culture to get the date format. The object that this method creates. is null. Represents a day of week style. Gets the custom format string for a day of week value. Gets the string that separates MonthDay and DayOfWeek. Gets a value indicating whether DayOfWeek is before MonthDay. Initializes a new instance of the struct. A custom format string for a day of week value. A string that separates MonthDay and DayOfWeek. A value indicating whether DayOfWeek is before MonthDay. Extracts the from the date format string. the date format string. The struct. is null. Indicates if the delete button should be visible. This override method is called when the control is clicked by mouse or keyboard User a colour zone to easily switch the background and foreground colours, from selected Material Design palette or custom ones. By default the selected item is displayed in the drop down list, as per Material Design specifications. To change this to a behavior of hiding the selected item from the drop down list, set this attached property to false. Gets or sets the maximum number of characters that can be manually entered into the text box.
cannot be set for an editable ComboBox. That's why this attached property exists.
Help us format the content of a header button in a calendar. Expected items, in the following order: 1) DateTime Calendar.DisplayDate 2) DateTime? Calendar.SelectedDate CircularProgressBar draws two arcs to support a full circle at 100 %. With one arc at 100 % the start point is identical the end point, so nothing is drawn. Midpoint at half of current percentage is the endpoint of the first arc and the start point of the second arc. Value converter that uses the Cursor from the bound property if set, otherwise it returns the . Converter for control. Can be extended by method. Helps coerce the correct item container style for a , according to whether the list is displaying in standard mode, or using a , such as a . Item container style to use when is null. Item container style to use when is not null, typically when a is applied. Returns the item container to use for a . Should be a or instance. 1 - Content presenter render size, 2 - Clipping border padding (main control padding) Allows editing of components inside of a data grid cell with a single left click. Set the maximum length for the text field. Not a dependency property, as is only applied once. Gets the parameter originally provided to / Allows interaction with the current dialog session. Cancel the close. Indicates if the close has already been cancelled. Gets the parameter originally provided to / Allows interaction with the current dialog session. Defines how a data context is sourced for a dialog if a is passed as the command parameter when using . The data context from the sender element (typically a ) is applied to the content. The data context from the is applied to the content. The data context is explicitly set to null. Routed command to be used somewhere inside an instance to trigger showing of the dialog. Content can be passed to the dialog via a . Routed command to be used inside dialog content to close a dialog. Use a to indicate the result of the parameter. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). Task result is the parameter used to close the dialog, typically what is passed to the command. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). Allows access to opened event which would otherwise have been subscribed to on a instance. Task result is the parameter used to close the dialog, typically what is passed to the command. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). Allows access to closing event which would otherwise have been subscribed to on a instance. Task result is the parameter used to close the dialog, typically what is passed to the command. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). Allows access to opened event which would otherwise have been subscribed to on a instance. Allows access to closing event which would otherwise have been subscribed to on a instance. Task result is the parameter used to close the dialog, typically what is passed to the command. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). Allows access to opened event which would otherwise have been subscribed to on a instance. Allows access to closing event which would otherwise have been subscribed to on a instance. Allows access to closed event which would otherwise have been subscribed to on a instance. Task result is the parameter used to close the dialog, typically what is passed to the command. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). of the instance where the dialog should be shown. Typically this will match an identifier set in XAML. null is allowed. Task result is the parameter used to close the dialog, typically what is passed to the command. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). of the instance where the dialog should be shown. Typically this will match an identifier set in XAML. null is allowed. Allows access to opened event which would otherwise have been subscribed to on a instance. Task result is the parameter used to close the dialog, typically what is passed to the command. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). of the instance where the dialog should be shown. Typically this will match an identifier set in XAML. null is allowed. Allows access to closing event which would otherwise have been subscribed to on a instance. Task result is the parameter used to close the dialog, typically what is passed to the command. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). of the instance where the dialog should be shown. Typically this will match an identifier set in XAML. null is allowed. Allows access to opened event which would otherwise have been subscribed to on a instance. Allows access to closing event which would otherwise have been subscribed to on a instance. Task result is the parameter used to close the dialog, typically what is passed to the command. Shows a modal dialog. To use, a instance must be in a visual tree (typically this may be specified towards the root of a Window's XAML). Content to show (can be a control or view model). of the instance where the dialog should be shown. Typically this will match an identifier set in XAML. null is allowed. Allows access to opened event which would otherwise have been subscribed to on a instance. Allows access to closing event which would otherwise have been subscribed to on a instance. Allows access to closed event which would otherwise have been subscribed to on a instance. Task result is the parameter used to close the dialog, typically what is passed to the command. Close a modal dialog. of the instance where the dialog should be closed. Typically this will match an identifier set in XAML. Close a modal dialog. of the instance where the dialog should be closed. Typically this will match an identifier set in XAML. to provide to close handler Retrieve the current dialog session for a DialogHost The identifier to use to retrieve the DialogHost The DialogSession if one is in process, or null dialog instance exists of the instance where the dialog should be closed. Typically this will match an identifier set in XAML. Identifier which is used in conjunction with to determine where a dialog should be shown. Returns a DialogSession for the currently open dialog for managing it programmatically. If no dialog is open, CurrentSession will return null Defines how a data context is sourced for a dialog if a is passed as the command parameter when using . Indicates whether the dialog will close if the user clicks off the dialog, on the obscured background. Parameter to provide to close handlers if an close due to click away is instigated. Allows association of a snackbar, so that notifications can be paused whilst a dialog is being displayed. Set the theme (light/dark) for the dialog. Represents the overlay brush that is used to dim the background behind the dialog Represents the brush for the Dialog's background Raised when a dialog is opened. Attached property which can be used on the which instigated the to process the event. Callback fired when the event is fired, allowing the event to be processed from a binding/view model. Raised just before a dialog is closed. Attached property which can be used on the which instigated the to process the closing event. Callback fired when the event is fired, allowing the event to be processed from a binding/view model. Raised when a dialog is closed. Attached property which can be used on the which instigated the to process the closed event. Callback fired when the event is fired, allowing the event to be processed from a binding/view model. Attempts to focus the content of a popup. The popup content. Helper extensions for showing dialogs. Shows a dialog using the first found in a given . Window on which the modal dialog should be displayed. Must contain a . Thrown is a is not found when conducting a depth first traversal of visual tree. As a depth first traversal of the window's visual tree is performed, it is not safe to use this method in a situation where a screen has multiple s. Shows a dialog using the first found in a given . Window on which the modal dialog should be displayed. Must contain a . Content to show (can be a control or view model). Allows access to opened event which would otherwise have been subscribed to on a instance. Thrown is a is not found when conducting a depth first traversal of visual tree. As a depth first traversal of the window's visual tree is performed, it is not safe to use this method in a situation where a screen has multiple s. Shows a dialog using the first found in a given . Window on which the modal dialog should be displayed. Must contain a . Content to show (can be a control or view model). Allows access to closing event which would otherwise have been subscribed to on a instance. Thrown is a is not found when conducting a depth first traversal of visual tree. As a depth first traversal of the window's visual tree is performed, it is not safe to use this method in a situation where a screen has multiple s. Shows a dialog using the first found in a given . Window on which the modal dialog should be displayed. Must contain a . Content to show (can be a control or view model). Allows access to opened event which would otherwise have been subscribed to on a instance. Allows access to closing event which would otherwise have been subscribed to on a instance. Thrown is a is not found when conducting a depth first traversal of visual tree. As a depth first traversal of the window's visual tree is performed, it is not safe to use this method in a situation where a screen has multiple s. Shows a dialog using the first found in a given . Window on which the modal dialog should be displayed. Must contain a . Content to show (can be a control or view model). Allows access to opened event which would otherwise have been subscribed to on a instance. Allows access to closing event which would otherwise have been subscribed to on a instance. Allows access to closed event which would otherwise have been subscribed to on a instance. Thrown is a is not found when conducting a depth first traversal of visual tree. As a depth first traversal of the window's visual tree is performed, it is not safe to use this method in a situation where a screen has multiple s. Shows a dialog using the parent/ancestor of the a given . Dependency object which should be a visual child of a , where the dialog will be shown. Content to show (can be a control or view model). Thrown is a is not found when conducting a depth first traversal of visual tree. Shows a dialog using the parent/ancestor of the a given . Dependency object which should be a visual child of a , where the dialog will be shown. Content to show (can be a control or view model). Allows access to opened event which would otherwise have been subscribed to on a instance. Thrown is a is not found when conducting a depth first traversal of visual tree. Shows a dialog using the parent/ancestor of the a given . Dependency object which should be a visual child of a , where the dialog will be shown. Content to show (can be a control or view model). Allows access to closing event which would otherwise have been subscribed to on a instance. Thrown is a is not found when conducting a depth first traversal of visual tree. Shows a dialog using the parent/ancestor of the a given . Dependency object which should be a visual child of a , where the dialog will be shown. Content to show (can be a control or view model). Allows access to opened event which would otherwise have been subscribed to on a instance. Allows access to closing event which would otherwise have been subscribed to on a instance. Thrown is a is not found when conducting a depth first traversal of visual tree. Shows a dialog using the parent/ancestor of the a given . Dependency object which should be a visual child of a , where the dialog will be shown. Content to show (can be a control or view model). Allows access to opened event which would otherwise have been subscribed to on a instance. Allows access to closing event which would otherwise have been subscribed to on a instance. Allows access to closed event which would otherwise have been subscribed to on a instance. Thrown is a is not found when conducting a depth first traversal of visual tree. Allows interaction with the current dialog session. Allows an open dialog to be managed. Use is only permitted during a single display operation. Indicates if the dialog session has ended. Once ended no further method calls will be permitted. Client code cannot set this directly, this is internally managed. To end the dialog session use . The parameter passed to the and return by Gets the which is currently displayed, so this could be a view model or a UI element. Update the current content in the dialog. Closes the dialog. Thrown if the dialog session has ended, or a close operation is currently in progress. Closes the dialog. Result parameter which will be returned in or from method. Thrown if the dialog session has ended, or a close operation is currently in progress. Cancel the close. Indicates if the close has already been cancelled. Allows interaction with the current dialog session. Raised when a drawer is opened. Raised when a drawer is closing. Allows interaction with the current dialog session. Controls the (uniform) corner radius of the contained card Controls the style of the contained card This interface is the adapter from UiControl (like , and others) to You should implement this interface in order to use SmartHint for your own control. Checks to see if the targeted control can be deemed as logically empty, even if not null, affecting the current hint display. Targeted control has keyboard focus Queues a notification message for display in a snackbar. Message. Queues a notification message for display in a snackbar. Message. Content for the action button. Call back to be executed if user clicks the action button. Queues a notification message for display in a snackbar. Message. Content for the action button. Call back to be executed if user clicks the action button. Argument to pass to . Queues a notification message for display in a snackbar. Message. Subsequent, duplicate messages queued within a short time span will be discarded. To override this behaviour and ensure the message always gets displayed set to true. Queues a notification message for display in a snackbar. Message. Content for the action button. Call back to be executed if user clicks the action button. The message will promoted to the front of the queue. Queues a notification message for display in a snackbar. Message. Content for the action button. Call back to be executed if user clicks the action button. Argument to pass to . The message will be promoted to the front of the queue and never considered to be a duplicate. Queues a notification message for display in a snackbar. Message. Content for the action button. Call back to be executed if user clicks the action button. Argument to pass to . The message will be promoted to the front of the queue. The message will never be considered a duplicate. Message show duration override. Queues a notification message for display in a snackbar. Message. Content for the action button. Call back to be executed if user clicks the action button. Argument to pass to . The message will promoted to the front of the queue. The message will never be considered a duplicate. Message show duration override. Controls the corner radius of the selection box. Provides shorthand to initialise a new for a . Controls the corner radius of the selection box. Controls the corner radius of the selection box. Controls the corner radius of the selection box. Floating Content (ex: Button) on navigation rail (optional) Gets or sets the icon to display. Gets the icon path data for the current . ****************************************** This code is auto generated. Do not amend. ****************************************** ****************************************** This code is auto generated. Do not amend. ****************************************** List of available icons for use with . All icons sourced from Material Design Icons Font - https://materialdesignicons.com/ - in accordance of https://github.com/Templarian/MaterialDesign/blob/master/LICENSE. Provides full information about a palette. Removes and readds resource dictionaries with static resource that will be re-evaluated with new theme brushes. This is primarily here for the obsolete theme brushes. Handles changes to the 'Password' attached property. Handle the 'PasswordChanged'-event on the PasswordBox View a control on a 3D plane. Taken from http://blogs.msdn.com/greg_schechter/archive/2007/10/26/enter-the-planerator-dead-simple-3d-in-wpf-with-a-stupid-name.aspx , Greg Schechter - Fall 2007 Wrap this around a class that we want to catch the measure and arrange processes occurring on, and propagate to the parent Planerator, if any. Do this because layout invalidations don't flow up out of a Viewport2DVisual3D object. Defines how the popup is aligned to the toggle part of the control. Display the popup below the toggle, and align the left edges.3 Display the popup below the toggle, and align the right edges. Display the popup below the toggle, and align the center of the popup with the center of the toggle. Display the popup above the toggle, and align the left edges. Display the popup above the toggle, and align the right edges. Display the popup above the toggle, and align the center of the popup with the center of the toggle. Display the popup to the left of the toggle, and align the top edges. Display the popup to the left of the toggle, and align the bottom edges. Display the popup to the left of the toggle, and align the middles. Display the popup to the right of the toggle, and align the top edges. Display the popup to the right of the toggle, and align the bottom edges. Display the popup to the right of the toggle, and align the middles. Defines what causes the to open it's popup. Open when the toggle button is clicked. Open when the mouse goes over the toggle button. Open when the mouse goes over the toggle button, or the space in which the popup box would occupy should it be open. Popup box, similar to a , but allows more customizable content. Routed command to be used inside of a popup content to close it. Content to display in the toggle button. Template for . Template for . Content to display in the toggle when it's checked (when the popup is open). Optional; if not provided the is used. Template for . Command to execute if toggle is checked (popup is open) and is set. Command parameter to use in conjunction with . Content to display in the content. Popup content template. Gets or sets whether the popup is currently open. Indicates of the popup should stay open if a click occurs inside the popup. Gets or sets how the popup is aligned in relation to the toggle. Gets or sets what trigger causes the popup to open. Get or sets how to unfurl controls when opening the popups. Only child elements of type are animated. Gets or sets how to unfurl controls when opening the popups. Only child elements of type are animated. Get or sets the popup horizontal offset in relation to the button. Get or sets the popup horizontal offset in relation to the button. Get or sets the popup vertical offset in relation to the button. Get or sets the popup vertical offset in relation to the button. Get or sets the corner radius of the popup card. Get or sets the corner radius of the popup card. Gets or sets the elevation of the popup card. Gets or sets the elevation of the popup card. Framework use. Provides the method used to position the popup. Event raised when the checked toggled content (if set) is clicked. Event raised when the checked toggled content (if set) is clicked. Raises . Raised when the popup is opened. Raises . Raised when the popup is closed. Raises . This class was initially based on work done in ControlzEx https://github.com/ControlzEx/ControlzEx This custom popup can be used by validation error templates or something else. It provides some additional nice features: - repositioning if host-window size or location changed - repositioning if host-window gets maximized and vice versa - it's only topmost if the host-window is activated Gets/sets if the popup can be closed by left mouse button down. Causes the popup to update it's position according to it's current settings. SetWindowPos options A strongly-typed resource class, for looking up localized strings, etc. Returns the cached ResourceManager instance used by this class. Overrides the current thread's CurrentUICulture property for all resource lookups using this strongly typed resource class. A custom control implementing a rating bar. The icon aka content may be set as a DataTemplate via the ButtonContentTemplate property. Gets or sets the value increments. Set to a value between 0.0 and 1.0 (both exclusive) to enable fractional values. Default value is 1.0 (i.e. fractional values disabled) The DependencyProperty for the RecognizesAccessKey property. Default Value: false Determine if Ripple should use AccessText in its style Set to true to cause the ripple to originate from the centre of the content. Otherwise the effect will originate from the mouse down position. Set to true to cause the ripple to originate from the centre of the content. Otherwise the effect will originate from the mouse down position. Set to true to cause the ripple to originate from the centre of the content. Otherwise the effect will originate from the mouse down position. Set to True to disable ripple effect Set to True to disable ripple effect Set to True to disable ripple effect Internal use only. Represents a display device or multiple display devices on a single system. Based on http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Screen.cs Available working area on the screen. This excludes taskbars and other docked windows. Gets an array of all of the displays on the system. Gets the bounds of the display. Gets the device name associated with a display. Gets a value indicating whether a particular display is the primary device. Gets the primary display. Gets the working area of the screen. Screen instances call this property to determine if their WorkingArea cache needs to be invalidated. Specifies a value that indicates whether the specified object is equal to this one. Retrieves a for the monitor that contains the specified point. Retrieves a for the monitor that contains the largest region of the Rect. Retrieves the working area for the monitor that is closest to the specified point. Retrieves the working area for the monitor that contains the largest region of the specified Rect. Retrieves the bounds of the monitor that is closest to the specified point. Retrieves the bounds of the monitor that contains the largest region of the specified Rect. Computes and retrieves a hash code for an object. Called by the SystemEvents class when our display settings are changing. We cache screen information and at this point we must invalidate our cache. Called by the SystemEvents class when our display settings have changed. Here, we increment a static counter that Screen instances can check against to invalidate their cache. Retrieves a string representing this object. A control that implement placeholder behavior. Can work as a simple placeholder either as a floating hint, see property. To set a target control you should set the HintProxy property. Use the converter which converts a control into the IHintProxy interface. Implements a inspired by the Material Design specs (https://material.google.com/components/snackbars-toasts.html). Defines the content of a message within a . Primary content should be set via the standard property. Where an action is allowed, content can be provided in . Standard button properties are provided for actions, including . Event correspond to left mouse button click on the Action button. Add / Remove ActionClickEvent handler Maximum total height of snackbar for the action button to be inlined. Default value (55) is between single line message (48) and two lined snackbar-message (66) because tolerance is required (see issue) If set, the active snackbar will be closed. Available only while the snackbar is displayed. Should be locked by . Gets the this is associated with. Gets or sets a value that indicates whether this message queue displays messages without discarding duplicates. False to show every message even if there are duplicates. Clear the message queue and close the active snackbar. This method can be called from any thread. The content to be displayed Message show duration. The content for the action button on the snackbar Handler to be invoked when the action button is clicked The argument to pass to the delegate. Promote the message, pushing it in front of any message that is not promoted. Always show this message, even if it's a duplicate Automatic ToolTip for TextBlock or TextBoxBase if containing text is trimmed Helper properties for working with text fields. The text box view margin property Sets the text box view margin. The element. The value. Gets the text box view margin. The element. The . Controls the visibility of the underline decoration. Controls the visibility of the underline decoration. Controls the visibility of the underline decoration. The attached WPF property for getting or setting the value for an underline decoration. Sets the used for underline decoration. Gets the used for underline decoration. Controls the visibility of the text field box. Controls the visibility of the text field area box. Controls the corner radius of the surrounding box. Controls the corner radius of the bottom line of the surrounding box. Controls the highlighting style of a text box. Enables a ripple effect on focusing the text box. Automatically inserts spelling suggestions into the text box context menu. SuffixText dependency property PrefixText dependency property Controls the visibility of the clear button. Controls visibility of the leading icon Controls the leading icon Controls the size of the leading icon Controls visibility of the trailing icon Controls the trailing icon Controls the size of the trailing icon Applies the text box view margin. The text box. The margin. The text box view margin property changed callback. The dependency object. The dependency property changed event args. Get the current Windows theme. Based on ControlzEx https://github.com/ControlzEx/ControlzEx/blob/48230bb023c588e1b7eb86ea83f7ddf7d25be735/src/ControlzEx/Theming/WindowsThemeHelper.cs#L19 Called when this element gets focus. IsDropDownOpenProperty property changed handler. DatePicker that changed its IsDropDownOpen. DependencyPropertyChangedEventArgs. Set to true to stop invalid text reverting back to previous valid value. Useful in cases where you want to display validation messages and allow the user to correct the data without it reverting. Set to true to display seconds in the time and allow the user to select seconds. Framework use only. Allows on (IsChecked) content to be provided on supporting styles. Allows on (IsChecked) content to be provided on supporting styles. Allows on (IsChecked) content to be provided on supporting styles. Allows an on (IsChecked) template to be provided on supporting styles. Allows an on (IsChecked) template to be provided on supporting styles. Allows an on (IsChecked) template to be provided on supporting styles. Allows transitions to be disabled where supported. Allows transitions to be disabled where supported. Note this is an inheritable property. Allows transitions to be disabled where supported. Note this is an inheritable property. Allows transitions to be disabled where supported. Note this is an inheritable property. Duration of the animation Multiplies a time span unit by the index of an item in a list. Example usage is for a to have a time delayed according to position in a list, so cascading animations can occur. Direction of the slide wipe Duration of the animation The transitioner provides an easy way to move between content with a default in-place circular transition. Causes the the next slide to be displayed (effectively increments ). Causes the the previous slide to be displayed (effectively decrements ). Moves to the first slide. Moves to the last slide. If enabled, transition origins will be applied to wipes, according to where a transition was triggered from. For example, the mouse point where a user clicks a button. Content control to host the content of an individual page within a . Content control to enable easier transitions. Gets or sets the transition to run when the content is loaded and made visible. Delay offset to be applied to all opening effect transitions. Allows multiple transition effects to be combined and run upon the content loading or being made visible. Finds a Child of a given item in the visual tree. A direct parent of the queried item. The type of the queried item. x:Name or Name of child. The first parent item that matches the submitted type parameter. If not matching item can be found, a null parent is being returned. Allows additional rendering for each tree node, outside of the rippled part of the node which responds to user selection. The content to be rendered is the same of the ; i.e the Header property, or some other content such as a view model, typically when using a . Sets the additional template. The element. The value. Gets the additional template. The element. The . Allows additional rendering for each tree node, outside of the rippled part of the node which responds to user selection. The content to be rendered is the same of the ; i.e the Header property, or some other content such as a view model, typically when using a . Sets the additional template selector. The element. The value. Gets the additional template selector. The element. The . To be used at level, or to be returned by implementors when the additional template associated with a tree should not be used. Allows controlling the visibility of the expander arrow on TreeViewItems that do not have any children. The hint property The hint property The hint property Framework use only. Framework use only. Framework use only. Returns full visual ancestry, starting at the leaf. If element is not of or the logical ancestry is used. GeneratedInternalTypeHelper CreateInstance GetPropertyValue SetPropertyValue CreateDelegate AddEventHandler