Expand Minimize

System.Windows Namespace

Provides several important Windows Presentation Foundation (WPF) base element classes, various classes that support the WPF property system and event logic, and other types that are more broadly consumed by the WPF core and framework.

  Class Description
Public class Application Encapsulates a Windows Presentation Foundation (WPF) application.
Public class AttachedPropertyBrowsableAttribute Provides a base class for .NET Framework attributes that report the use scope of attached properties.
Public class AttachedPropertyBrowsableForChildrenAttribute Specifies that an attached property has a browsable scope that extends to child elements in the logical tree.
Public class AttachedPropertyBrowsableForTypeAttribute Specifies that an attached property is browsable only for elements that derive from a specified type.
Public class AttachedPropertyBrowsableWhenAttributePresentAttribute Specifies that an attached property is only browsable on an element that also has another specific  .NET Framework attribute applied to its class definition.
Public class AutoResizedEventArgs Provides data for the AutoResized event raised by HwndSource.
Public class BaseCompatibilityPreferences Contains properties that specify how an application should behave relative to new WPF features that are in the WindowsBase assembly.
Public class Clipboard Provides static methods that facilitate transferring data to and from the system Clipboard.
Public class ColorConvertedBitmapExtension Implements a markup extension that enables ColorConvertedBitmap creation. A ColorConvertedBitmap does not have an embedded profile, the profile instead being based on source and destination values.
Public class ComponentResourceKey Defines or references resource keys based on class names in external assemblies, as well as an additional identifier.
Public class Condition Represents a condition for the MultiTrigger and the MultiDataTrigger, which apply changes to property values based on a set of conditions.
Public class ConditionCollection Represents a collection of Condition objects.
Public class ContentElement Provides a WPF core-level base class for content elements. Content elements are designed for flow-style presentation, using an intuitive markup-oriented layout model and a deliberately simple object model.
Public class ContentOperations Provides static utility methods for getting or setting the position of a ContentElement in an element tree.
Public class CoreCompatibilityPreferences Contains properties that specify how an application should behave relative to WPF features that are in the PresentationCore assembly.
Public class CornerRadiusConverter Converts instances of other types to and from a CornerRadius.
Public class CultureInfoIetfLanguageTagConverter Converts instances of CultureInfo to and from other data types.
Public class DataFormat Represents a data format by using a format name and numeric ID.
Public class DataFormats Provides a set of predefined data format names that can be used to identify data formats available in the clipboard or drag-and-drop operations.
Public class DataObject Provides a basic implementation of the IDataObject interface, which defines a format-independent mechanism for transferring data.
Public class DataObjectCopyingEventArgs Arguments for the DataObject.Copying event.
Public class DataObjectEventArgs Provides an abstract base class for events associated with the DataObject class.
Public class DataObjectPastingEventArgs Contains arguments for the DataObject.Pasting event.
Public class DataObjectSettingDataEventArgs Contains arguments for the DataObject.SettingData event.
Public class DataTemplate Describes the visual structure of a data object.
Public class DataTemplateKey Represents the resource key for the DataTemplate class.
Public class DataTrigger Represents a trigger that applies property values or performs actions when the bound data meets a specified condition.
Public class DeferrableContent Represents deferrable content that is held within BAML as a stream.
Public class DeferrableContentConverter Converts a stream to a DeferrableContent instance.
Public class DependencyObject Represents an object that participates in the dependency property system.
Public class DependencyObjectType Implements an underlying type cache for all DependencyObject derived types.
Public class DependencyProperty Represents a property that can be set through methods such as, styling, data binding, animation, and inheritance.
Public class DependencyPropertyHelper Provides a single helper method (GetValueSource) that reports the property system source for the effective value of a dependency property.
Public class DependencyPropertyKey Provides a dependency property identifier for limited write access to a read-only dependency property.
Public class DialogResultConverter Converts the DialogResult property, which is a Nullable<T> value of type Boolean, to and from other types.
Public class DragDrop Provides helper methods and fields for initiating drag-and-drop operations, including a method to begin a drag-and-drop operation, and facilities for adding and removing drag-and-drop related event handlers.
Public class DragEventArgs Contains arguments relevant to all drag-and-drop events (DragEnter, DragLeave, DragOver, and Drop).
Public class DurationConverter Converts instances of Duration to and from other type representations.
Public class DynamicResourceExtension Implements a markup extension that supports dynamic resource references made from XAML.
Public class DynamicResourceExtensionConverter Converts from parsed XAML to DynamicResourceExtension and supports dynamic resource references made from XAML.
Public class EventManager Provides event-related utility methods that register routed events for class owners and add class handlers.
Public class EventPrivateKey Provides unique identification for events whose handlers are stored into an internal hashtable.
Public class EventRoute Represents the container for the route to be followed by a routed event.
Public class EventSetter Represents an event setter in a style. Event setters invoke the specified event handlers in response to events.
Public class EventTrigger Represents a trigger that applies a set of actions in response to an event.
Public class ExceptionRoutedEventArgs Provides data for the Image and MediaElement failed events.
Public class ExitEventArgs Event arguments for the Exit event.
Public class Expression This type supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.
Public class ExpressionConverter Infrastructure. Converts instances of Expression to and from other types.
Public class FigureLengthConverter Converts instances of other types to and from a FigureLength.
Public class FontSizeConverter Converts font size values to and from other type representations.
Public class FontStretchConverter Converts instances of FontStretch to and from other type representations.
Public class FontStretches Provides a set of static predefined FontStretch values.
Public class FontStyleConverter Converts instances of FontStyle to and from other data types.
Public class FontStyles Provides a set of static predefined FontStyle values.
Public class FontWeightConverter Converts instances of FontWeight to and from other data types.
Public class FontWeights Provides a set of static predefined FontWeight values.
Public class FrameworkCompatibilityPreferences Contains properties that specify how an application should behave relative to WPF features that are in the PresentationFramework assembly.
Public class FrameworkContentElement FrameworkContentElement is the WPF framework-level implementation and expansion of the ContentElement base class. FrameworkContentElement adds support for additional input APIs (including tooltips and context menus), storyboards, data context for data binding, styles support, and logical tree helper APIs.
Public class FrameworkElement Provides a WPF framework-level set of properties, events, and methods for Windows Presentation Foundation (WPF) elements. This class represents the provided WPF framework-level implementation that is built on the WPF core-level APIs that are defined by UIElement.
Public class FrameworkElementFactory Supports the creation of templates.
Public class FrameworkPropertyMetadata Reports or applies metadata for a dependency property, specifically adding framework-specific property system characteristics.
Public class FrameworkTemplate Enables the instantiation of a tree of FrameworkElement and/or FrameworkContentElement objects.
Public class Freezable Defines an object that has a modifiable state and a read-only (frozen) state. Classes that derive from Freezable provide detailed change notification, can be made immutable, and can clone themselves.
Public class FreezableCollection<T> Represents a collection of DependencyObject, Freezable, or Animatable objects. FreezableCollection<T> is itself an Animatable type.
Public class GiveFeedbackEventArgs Contains arguments for the GiveFeedback event.
Public class GridLengthConverter Converts instances of other types to and from GridLength instances.
Public class HierarchicalDataTemplate Represents a DataTemplate that supports HeaderedItemsControl, such as TreeViewItem or MenuItem.
Public class Int32RectConverter Converts instances of other types to and from an Int32Rect.
Public class KeySplineConverter Converts instances of other types to and from a KeySpline.
Public class KeyTimeConverter Converts instances of KeyTime to and from other types.
Public class LengthConverter Converts instances of other types to and from instances of a Double that represent an object's length.
Public class LocalizabilityAttribute Specifies the localization attributes for a binary XAML (BAML) class or class member.
Public class Localization The Localization class defines attached properties for localization attributes and comments.
Public class LogicalTreeHelper Provides static helper methods for querying objects in the logical tree.
Public class LostFocusEventManager Provides a WeakEventManager implementation so that you can use the "weak event listener" pattern to attach listeners for the UIElement.LostFocus or ContentElement.LostFocus events.
Public class MediaScriptCommandRoutedEventArgs Provides data for the MediaElement.ScriptCommand and MediaPlayer.ScriptCommand events.
Public class MessageBox Displays a message box.
Public class MultiDataTrigger Represents a trigger that applies property values or performs actions when the bound data meet a set of conditions.
Public class MultiTrigger Represents a trigger that applies property values or performs actions when a set of conditions are satisfied.
Public class NameScope Implements base WPF support for the INameScope methods that store or retrieve name-object mappings into a particular XAML namescope. Adds attached property support to make it simpler to get or set XAML namescope names dynamically at the element level..
Public class NullableBoolConverter Converts to and from the Nullable<T> type (using the Boolean type constraint on the generic).
Public class PointConverter Converts instances of other types to and from a Point.
Public class PresentationSource Provides an abstract base for classes that present content from another technology as part of an interoperation scenario. In addition, this class provides static methods for working with these sources, as well as the basic visual-layer presentation architecture.
Public class PropertyMetadata Defines certain behavior aspects of a dependency property as it is applied to a specific type, including conditions it was registered with.
Public class PropertyPath Implements a data structure for describing a property as a path below another property, or below an owning type. Property paths are used in data binding to objects, and in storyboards and timelines for animations.
Public class PropertyPathConverter Provides a type converter for PropertyPath objects.
Public class QueryContinueDragEventArgs Contains arguments for the QueryContinueDrag event.
Public class RectConverter Converts instances of other types to and from instances of Rect.
Public class RequestBringIntoViewEventArgs Provides data for the FrameworkElement.RequestBringIntoView routed event.
Public class ResourceDictionary Provides a hash table / dictionary implementation that contains WPF resources used by components and other elements of a WPF application. 
Public class ResourceKey Provides an abstract base class for various resource keys.
Public class ResourceReferenceKeyNotFoundException The exception that is thrown when a resource reference key cannot be found during parsing or serialization of markup extension resources.
Public class RoutedEvent Represents and identifies a routed event and declares its characteristics.
Public class RoutedEventArgs Contains state information and event data associated with a routed event.
Public class RoutedPropertyChangedEventArgs<T> Provides data about a change in value to a dependency property as reported by particular routed events, including the previous and current value of the property that changed.
Public class SessionEndingCancelEventArgs Contains the event arguments for the SessionEnding event.
Public class Setter Represents a setter that applies a property value.
Public class SetterBase Represents the base class for value setters.
Public class SetterBaseCollection Represents a collection of SetterBase objects.
Public class SizeChangedEventArgs Provides data related to the SizeChanged event.
Public class SizeChangedInfo Report the specifics of a value change involving a Size. This is used as a parameter in OnRenderSizeChanged overrides.
Public class SizeConverter Converts instances of other types to and from instances of the Size class.
Public class SourceChangedEventArgs Provides data for the SourceChanged event, used for interoperation. This class cannot be inherited.
Public class SplashScreen Provides a startup screen for a Windows Presentation Foundation (WPF) application.
Public class StartupEventArgs Contains the arguments for the Startup event.
Public class StaticResourceExtension Implements a markup extension that supports static (XAML load time) resource references made from XAML.
Public class StrokeCollectionConverter Converts a StrokeCollection to a string.
Public class Style Enables the sharing of properties, resources, and event handlers between instances of a type.
Public class StyleTypedPropertyAttribute Represents an attribute that is applied to the class definition and determines the TargetTypes of the properties that are of type Style.
Public class SystemColors Contains system colors, system brushes, and system resource keys that correspond to system display elements.
Public class SystemCommands Defines routed commands that are common to window management.
Public class SystemFonts Contains properties that expose the system resources that concern fonts.
Public class SystemParameters Contains properties that you can use to query system settings.
Public class TemplateBindingExpression Describes a run-time instance of a TemplateBindingExtension.
Public class TemplateBindingExpressionConverter A type converter that is used to construct a markup extension from a TemplateBindingExpression instance during serialization.
Public class TemplateBindingExtension Implements a markup extension that supports the binding between the value of a property in a template and the value of some other exposed property on the templated control.
Public class TemplateBindingExtensionConverter A type converter that is used to construct a TemplateBindingExtension from an instance during serialization.
Public class TemplateContent Implements the record and playback logic that templates use for deferring content when they interact with XAML readers and writers.
Public class TemplateContentLoader Implements XamlDeferringLoader in order to defer loading of the XAML content that is defined for a template in WPF XAML.
Public class TemplateKey When used as a resource key for a data template, allows the data template to participate in the lookup process.
Public class TemplatePartAttribute Represents an attribute that is applied to the class definition to identify the types of the named parts that are used for templating.
Public class TemplateVisualStateAttribute Specifies that a control can be in a certain state and that a VisualState is expected in the control's ControlTemplate.
Public class TextDecoration Represents a text decoration, which a visual ornamentation that is added to text (such as an underline).
Public class TextDecorationCollection Represents a collection of TextDecoration instances.
Public class TextDecorationCollectionConverter Converts instances of TextDecorationCollection from other data types.
Public class TextDecorations Provides a set of static predefined text decorations.
Public class ThemeDictionaryExtension Implements a markup extension that enables application authors to customize control styles based on the current system theme.
Public class ThemeInfoAttribute Specifies the location in which theme dictionaries are stored for an assembly.
Public class ThicknessConverter Converts instances of other types to and from instances of Thickness.
Public class Trigger Represents a trigger that applies property values or performs actions conditionally.
Public class TriggerAction Describes an action to perform for a trigger.
Public class TriggerActionCollection Represents a collection of TriggerAction objects.
Public class TriggerBase Represents the base class for specifying a conditional value within a Style object.
Public class TriggerCollection Represents a collection of TriggerBase objects.
Public class UIElement UIElement is a base class for WPF core level implementations building on Windows Presentation Foundation (WPF) elements and basic presentation characteristics.
Public class UIElement3D UIElement3D is a base class for WPF core level implementations building on Windows Presentation Foundation (WPF) elements and basic presentation characteristics.
Public class UIPropertyMetadata Provides property metadata for non-framework properties that do have rendering/user interface impact at the core level.
Public class VectorConverter Converts instances of other types to and from a Vector.
Public class VisualState Represents the visual appearance of the control when it is in a specific state.
Public class VisualStateChangedEventArgs Provides data for the CurrentStateChanging and CurrentStateChanged events.
Public class VisualStateGroup Contains mutually exclusive VisualState objects and VisualTransition objects that are used to move from one state to another.
Public class VisualStateManager Manages states and the logic for transitioning between states for controls.
Public class VisualTransition Represents the visual behavior that occurs when a control transitions from one state to another.
Public class WeakEventManager Provides a base class for the event manager that is used in the weak event pattern. The manager adds and removes listeners for events (or callbacks) that also use the pattern.
Protected class WeakEventManager.ListenerList Provides a built-in collection list for storing listeners for a WeakEventManager.
Protected class WeakEventManager.ListenerList<TEventArgs> Provides a type-safe collection list for storing listeners for a WeakEventManager. This class defines a type parameter for the event data that is used.
Public class WeakEventManager<TEventSource, TEventArgs> Provides a type-safe WeakEventManager that enables you to specify the event handler to use for the "weak event listener" pattern. This class defines a type parameter for the source of the event and a type parameter for the event data that is used.
Public class Window Provides the ability to create, configure, show, and manage the lifetime of windows and dialog boxes.
Public class WindowCollection Represents a collection of Window objects. This class cannot be inherited.

  Structure Description
Public structure CornerRadius Represents the radii of a rectangle's corners.
Public structure DependencyPropertyChangedEventArgs Provides data for various property changed events. Typically these events report effective value changes in the value of a read-only dependency property. Another usage is as part of a PropertyChangedCallback implementation.
Public structure Duration Represents the duration of time that a Timeline is active.
Public structure FigureLength Describes the height or width of a Figure.
Public structure FontStretch Describes the degree to which a font has been stretched compared to the normal aspect ratio of that font.
Public structure FontStyle Defines a structure that represents the style of a font face as normal, italic, or oblique.
Public structure FontWeight Refers to the density of a typeface, in terms of the lightness or heaviness of the strokes.
Public structure FreezableCollection<T>.Enumerator Enumerates the members of a FreezableCollection<T>.
Public structure GridLength Represents the length of elements that explicitly support Star unit types.
Public structure Int32Rect Describes the width, height, and location of an integer rectangle.
Public structure LocalValueEntry Represents a property identifier and the property value for a locally set dependency property.
Public structure LocalValueEnumerator Provides enumeration support for the local values of any dependency properties that exist on a DependencyObject.
Public structure Point Represents an x- and y-coordinate pair in two-dimensional space.
Public structure Rect Describes the width, height, and location of a rectangle.
Public structure RoutedEventHandlerInfo Infrastructure. Provides special handling information to inform event listeners whether specific handlers should be invoked.
Public structure Size Implements a structure that is used to describe the Size of an object.
Public structure TextDecorationCollection.Enumerator Enumerates TextDecoration items in a TextDecoration.
Public structure Thickness Describes the thickness of a frame around a rectangle. Four Double values describe the Left, Top, Right, and Bottom sides of the rectangle, respectively.
Public structure ValueSource Reports the information returned from DependencyPropertyHelper.GetValueSource.
Public structure Vector Represents a displacement in 2-D space.

  Interface Description
Public interface IContentHost This interface is implemented by layouts which host ContentElement.
Public interface IDataObject Provides a format-independent mechanism for transferring data.
Public interface IFrameworkInputElement Declares a namescope contract for framework elements.
Public interface IInputElement Establishes the common events and also the event-related properties and methods for basic input processing by Windows Presentation Foundation (WPF) elements.
Public interface IWeakEventListener Provides event listening support for classes that expect to receive events through the WeakEvent pattern and a WeakEventManager.

  Delegate Description
Public delegate AutoResizedEventHandler Represents the method that will handle the AutoResized event raised by HwndSource.
Public delegate CoerceValueCallback Provides a template for a method that is called whenever a dependency property value is being re-evaluated, or coercion is specifically requested.
Public delegate DataObjectCopyingEventHandler Represents a method that will handle the DataObject.Copying attached event.
Public delegate DataObjectPastingEventHandler Represents a method that will handle the DataObject.Pasting attached event.
Public delegate DataObjectSettingDataEventHandler Represents a method that will handle the DataObject.SettingData attached event.
Public delegate DependencyPropertyChangedEventHandler Represents the method that will handle events raised when a DependencyProperty is changed on a particular DependencyObject implementation.
Public delegate DragEventHandler Represents a method that will handle drag-and-drop routed events, for example UIElement.DragEnter.
Public delegate ExitEventHandler Represents the method that handles the Exit event.
Public delegate GiveFeedbackEventHandler Represents a method that will handle the feedback routed event from in-process drag-and-drop operations, for instance UIElement.GiveFeedback.
Public delegate PropertyChangedCallback Represents the callback that is invoked when the effective property value of a dependency property changes.
Public delegate QueryContinueDragEventHandler Represents a method that will handle the routed events that enables a drag-and-drop operation to be canceled by the drag source, for example UIElement.QueryContinueDrag.
Public delegate RequestBringIntoViewEventHandler Represents the method that will handle the FrameworkElement.RequestBringIntoView routed event.
Public delegate RoutedEventHandler Represents the method that will handle various routed events that do not have specific event data beyond the data that is common for all routed events.
Public delegate RoutedPropertyChangedEventHandler<T> Represents methods that will handle various routed events that track property value changes.
Public delegate SessionEndingCancelEventHandler Represents the method that handles the SessionEnding event.
Public delegate SizeChangedEventHandler Represents the method that will handle the FrameworkElement.SizeChanged routed event.
Public delegate SourceChangedEventHandler Represents the method that will handle the "SourceChanged" event on specific listener elements.
Public delegate StartupEventHandler Represents the method that handles the Startup event.
Public delegate ValidateValueCallback Represents a method used as a callback that validates the effective value of a dependency property.

  Enumeration Description
Public enumeration BaselineAlignment Describes how the baseline for a text-based element is positioned on the vertical axis, relative to the established baseline for text.
Public enumeration BaseValueSource Identifies the property system source of a particular dependency property value.
Public enumeration ColumnSpaceDistribution Describes how to distribute space in columnated flow content.
Public enumeration DragAction Specifies how and if a drag-and-drop operation should continue.
Public enumeration DragDropEffects Specifies the effects of a drag-and-drop operation.
Public enumeration DragDropKeyStates Specifies the current state of the modifier keys (SHIFT, CTRL, and ALT), as well as the state of the mouse buttons.
Public enumeration FigureHorizontalAnchor Describes a position reference for a figure in a horizontal direction.
Public enumeration FigureUnitType Describes the unit type associated with the width or height of a FigureLength.
Public enumeration FigureVerticalAnchor Describes the point of reference of a figure in the vertical direction.
Public enumeration FlowDirection Defines constants that specify the content flow direction for text and user interface (UI) elements. 
Public enumeration FontCapitals Describes the capital letter style for a Typography object.
Public enumeration FontEastAsianLanguage Provides a mechanism for the user to select font-specific versions of glyphs for a specified East Asian writing system or language.
Public enumeration FontEastAsianWidths Provides a mechanism for the user to select glyphs of different width styles.
Public enumeration FontFraction Describes the fraction style for a Typography object.
Public enumeration FontNumeralAlignment Describes the numeral alignment for a Typography object.
Public enumeration FontNumeralStyle Describes the numeral style for a Typography object.
Public enumeration FontVariants Renders variant typographic glyph forms.
Public enumeration FrameworkPropertyMetadataOptions Specifies the types of framework-level property behavior that pertain to a particular dependency property in the Windows Presentation Foundation (WPF) property system.
Public enumeration GridUnitType Describes the kind of value that a GridLength object is holding.
Public enumeration HorizontalAlignment Indicates where an element should be displayed on the horizontal axis relative to the allocated layout slot of the parent element.
Public enumeration InheritanceBehavior Indicates the current mode of lookup for both property value inheritance, a resource lookup, and a RelativeSource FindAncestor lookup.
Public enumeration LineBreakCondition Describes the breaking condition around an inline object.
Public enumeration LineStackingStrategy Describes a mechanism by which a line box is determined for each line.
Public enumeration LocalizationCategory Specifies the category value of a LocalizabilityAttribute for a binary XAML (BAML) class or class member.
Public enumeration MessageBoxButton Specifies the buttons that are displayed on a message box. Used as an argument of the Show method.
Public enumeration MessageBoxImage Specifies the icon that is displayed by a message box.
Public enumeration MessageBoxOptions Specifies special display options for a message box.
Public enumeration MessageBoxResult Specifies which message box button that a user clicks. MessageBoxResult is returned by the Show method.
Public enumeration Modifiability Specifies the modifiability value of a LocalizabilityAttribute for a binary XAML (BAML) class or class member.
Public enumeration PowerLineStatus Indicates whether the system power is online, or that the system power status is unknown.
Public enumeration Readability Specifies the readability value of a LocalizabilityAttribute for a binary XAML (BAML) class or class member.
Public enumeration ReasonSessionEnding Specifies the reason for which the user's session is ending. Used by the ReasonSessionEnding property.
Public enumeration ResizeMode Specifies whether a window can be resized and, if so, how it can be resized. Used by the ResizeMode property.
Public enumeration ResourceDictionaryLocation Specifies the locations where theme resource dictionaries are located.
Public enumeration RoutingStrategy Indicates the routing strategy of a routed event.
Public enumeration ShutdownMode Specifies how an application will shutdown. Used by the ShutdownMode property.
Public enumeration SizeToContent Specifies how a window will automatically size itself to fit the size of its content. Used by the Window.SizeToContent property.
Protected enumeration TemplateKey.TemplateType Describes the different types of templates that use TemplateKey.
Public enumeration TextAlignment Specifies whether the text in the object is left-aligned, right-aligned, centered, or justified.
Public enumeration TextDataFormat Specifies the data format of the text data.
Public enumeration TextDecorationLocation Specifies the vertical position of a TextDecoration object.
Public enumeration TextDecorationUnit Specifies the unit type of either a TextDecoration PenOffset or a Pen thickness value.
Public enumeration TextMarkerStyle Describes the appearance of a list item's bullet style.
Public enumeration TextTrimming Describes how text is trimmed when it overflows the edge of its containing box.
Public enumeration TextWrapping Specifies whether text wraps when it reaches the edge of the containing box
Public enumeration VerticalAlignment Describes how a child element is vertically positioned or stretched within a parent's layout slot.
Public enumeration Visibility Specifies the display state of an element.
Public enumeration WindowStartupLocation Specifies the position that a Window will be shown in when it is first opened. Used by the Window.WindowStartupLocation property.
Public enumeration WindowState Specifies whether a window is minimized, maximized, or restored. Used by the WindowState property.
Public enumeration WindowStyle Specifies the type of border that a Window has. Used by the WindowStyle property.
Public enumeration WrapDirection Specifies the allowable directions that content can wrap around an object.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft