Show / Hide Table of Contents

Class TokenInlineUIContainer

Implementation of InlineUIContainer that supports tokens. The container can host any UIElement for token customization.

Inheritance
object
DispatcherObject
DependencyObject
ContentElement
FrameworkContentElement
TextElement
Inline
InlineUIContainer
TokenInlineUIContainer
Implements
IAnimatable
ISupportInitialize
IFrameworkInputElement
IInputElement
IQueryAmbient
IAddChild
Inherited Members
InlineUIContainer.Child
Inline.BaselineAlignmentProperty
Inline.FlowDirectionProperty
Inline.TextDecorationsProperty
Inline.BaselineAlignment
Inline.FlowDirection
Inline.NextInline
Inline.PreviousInline
Inline.SiblingInlines
Inline.TextDecorations
TextElement.BackgroundProperty
TextElement.FontFamilyProperty
TextElement.FontSizeProperty
TextElement.FontStretchProperty
TextElement.FontStyleProperty
TextElement.FontWeightProperty
TextElement.ForegroundProperty
TextElement.TextEffectsProperty
TextElement.GetFontFamily(DependencyObject)
TextElement.GetFontSize(DependencyObject)
TextElement.GetFontStretch(DependencyObject)
TextElement.GetFontStyle(DependencyObject)
TextElement.GetFontWeight(DependencyObject)
TextElement.GetForeground(DependencyObject)
TextElement.OnPropertyChanged(DependencyPropertyChangedEventArgs)
TextElement.SetFontFamily(DependencyObject, FontFamily)
TextElement.SetFontSize(DependencyObject, double)
TextElement.SetFontStretch(DependencyObject, FontStretch)
TextElement.SetFontStyle(DependencyObject, FontStyle)
TextElement.SetFontWeight(DependencyObject, FontWeight)
TextElement.SetForeground(DependencyObject, Brush)
TextElement.Background
TextElement.ContentEnd
TextElement.ContentStart
TextElement.ElementEnd
TextElement.ElementStart
TextElement.FontFamily
TextElement.FontSize
TextElement.FontStretch
TextElement.FontStyle
TextElement.FontWeight
TextElement.Foreground
TextElement.LogicalChildren
TextElement.TextEffects
TextElement.Typography
FrameworkContentElement.BindingGroupProperty
FrameworkContentElement.ContextMenuClosingEvent
FrameworkContentElement.ContextMenuOpeningEvent
FrameworkContentElement.ContextMenuProperty
FrameworkContentElement.CursorProperty
FrameworkContentElement.DataContextProperty
FrameworkContentElement.DefaultStyleKeyProperty
FrameworkContentElement.FocusVisualStyleProperty
FrameworkContentElement.ForceCursorProperty
FrameworkContentElement.InputScopeProperty
FrameworkContentElement.LanguageProperty
FrameworkContentElement.LoadedEvent
FrameworkContentElement.NameProperty
FrameworkContentElement.OverridesDefaultStyleProperty
FrameworkContentElement.StyleProperty
FrameworkContentElement.TagProperty
FrameworkContentElement.ToolTipClosingEvent
FrameworkContentElement.ToolTipOpeningEvent
FrameworkContentElement.ToolTipProperty
FrameworkContentElement.UnloadedEvent
FrameworkContentElement.AddLogicalChild(object)
FrameworkContentElement.BeginInit()
FrameworkContentElement.BeginStoryboard(Storyboard)
FrameworkContentElement.BeginStoryboard(Storyboard, HandoffBehavior)
FrameworkContentElement.BeginStoryboard(Storyboard, HandoffBehavior, bool)
FrameworkContentElement.BringIntoView()
FrameworkContentElement.EndInit()
FrameworkContentElement.FindName(string)
FrameworkContentElement.FindResource(object)
FrameworkContentElement.GetBindingExpression(DependencyProperty)
FrameworkContentElement.GetUIParentCore()
FrameworkContentElement.MoveFocus(TraversalRequest)
FrameworkContentElement.OnContextMenuClosing(ContextMenuEventArgs)
FrameworkContentElement.OnContextMenuOpening(ContextMenuEventArgs)
FrameworkContentElement.OnGotFocus(RoutedEventArgs)
FrameworkContentElement.OnInitialized(EventArgs)
FrameworkContentElement.OnStyleChanged(Style, Style)
FrameworkContentElement.OnToolTipClosing(ToolTipEventArgs)
FrameworkContentElement.OnToolTipOpening(ToolTipEventArgs)
FrameworkContentElement.PredictFocus(FocusNavigationDirection)
FrameworkContentElement.RegisterName(string, object)
FrameworkContentElement.RemoveLogicalChild(object)
FrameworkContentElement.SetBinding(DependencyProperty, string)
FrameworkContentElement.SetBinding(DependencyProperty, BindingBase)
FrameworkContentElement.SetResourceReference(DependencyProperty, object)
FrameworkContentElement.TryFindResource(object)
FrameworkContentElement.UnregisterName(string)
FrameworkContentElement.UpdateDefaultStyle()
FrameworkContentElement.BindingGroup
FrameworkContentElement.ContextMenu
FrameworkContentElement.Cursor
FrameworkContentElement.DataContext
FrameworkContentElement.DefaultStyleKey
FrameworkContentElement.FocusVisualStyle
FrameworkContentElement.ForceCursor
FrameworkContentElement.InputScope
FrameworkContentElement.IsInitialized
FrameworkContentElement.IsLoaded
FrameworkContentElement.Language
FrameworkContentElement.Name
FrameworkContentElement.OverridesDefaultStyle
FrameworkContentElement.Parent
FrameworkContentElement.Resources
FrameworkContentElement.Style
FrameworkContentElement.Tag
FrameworkContentElement.TemplatedParent
FrameworkContentElement.ToolTip
FrameworkContentElement.ContextMenuClosing
FrameworkContentElement.ContextMenuOpening
FrameworkContentElement.DataContextChanged
FrameworkContentElement.Initialized
FrameworkContentElement.Loaded
FrameworkContentElement.SourceUpdated
FrameworkContentElement.TargetUpdated
FrameworkContentElement.ToolTipClosing
FrameworkContentElement.ToolTipOpening
FrameworkContentElement.Unloaded
ContentElement.AllowDropProperty
ContentElement.AreAnyTouchesCapturedProperty
ContentElement.AreAnyTouchesCapturedWithinProperty
ContentElement.AreAnyTouchesDirectlyOverProperty
ContentElement.AreAnyTouchesOverProperty
ContentElement.DragEnterEvent
ContentElement.DragLeaveEvent
ContentElement.DragOverEvent
ContentElement.DropEvent
ContentElement.FocusableProperty
ContentElement.GiveFeedbackEvent
ContentElement.GotFocusEvent
ContentElement.GotKeyboardFocusEvent
ContentElement.GotMouseCaptureEvent
ContentElement.GotStylusCaptureEvent
ContentElement.GotTouchCaptureEvent
ContentElement.IsEnabledProperty
ContentElement.IsFocusedProperty
ContentElement.IsKeyboardFocusedProperty
ContentElement.IsKeyboardFocusWithinProperty
ContentElement.IsMouseCapturedProperty
ContentElement.IsMouseCaptureWithinProperty
ContentElement.IsMouseDirectlyOverProperty
ContentElement.IsMouseOverProperty
ContentElement.IsStylusCapturedProperty
ContentElement.IsStylusCaptureWithinProperty
ContentElement.IsStylusDirectlyOverProperty
ContentElement.IsStylusOverProperty
ContentElement.KeyDownEvent
ContentElement.KeyUpEvent
ContentElement.LostFocusEvent
ContentElement.LostKeyboardFocusEvent
ContentElement.LostMouseCaptureEvent
ContentElement.LostStylusCaptureEvent
ContentElement.LostTouchCaptureEvent
ContentElement.MouseDownEvent
ContentElement.MouseEnterEvent
ContentElement.MouseLeaveEvent
ContentElement.MouseLeftButtonDownEvent
ContentElement.MouseLeftButtonUpEvent
ContentElement.MouseMoveEvent
ContentElement.MouseRightButtonDownEvent
ContentElement.MouseRightButtonUpEvent
ContentElement.MouseUpEvent
ContentElement.MouseWheelEvent
ContentElement.PreviewDragEnterEvent
ContentElement.PreviewDragLeaveEvent
ContentElement.PreviewDragOverEvent
ContentElement.PreviewDropEvent
ContentElement.PreviewGiveFeedbackEvent
ContentElement.PreviewGotKeyboardFocusEvent
ContentElement.PreviewKeyDownEvent
ContentElement.PreviewKeyUpEvent
ContentElement.PreviewLostKeyboardFocusEvent
ContentElement.PreviewMouseDownEvent
ContentElement.PreviewMouseLeftButtonDownEvent
ContentElement.PreviewMouseLeftButtonUpEvent
ContentElement.PreviewMouseMoveEvent
ContentElement.PreviewMouseRightButtonDownEvent
ContentElement.PreviewMouseRightButtonUpEvent
ContentElement.PreviewMouseUpEvent
ContentElement.PreviewMouseWheelEvent
ContentElement.PreviewQueryContinueDragEvent
ContentElement.PreviewStylusButtonDownEvent
ContentElement.PreviewStylusButtonUpEvent
ContentElement.PreviewStylusDownEvent
ContentElement.PreviewStylusInAirMoveEvent
ContentElement.PreviewStylusInRangeEvent
ContentElement.PreviewStylusMoveEvent
ContentElement.PreviewStylusOutOfRangeEvent
ContentElement.PreviewStylusSystemGestureEvent
ContentElement.PreviewStylusUpEvent
ContentElement.PreviewTextInputEvent
ContentElement.PreviewTouchDownEvent
ContentElement.PreviewTouchMoveEvent
ContentElement.PreviewTouchUpEvent
ContentElement.QueryContinueDragEvent
ContentElement.QueryCursorEvent
ContentElement.StylusButtonDownEvent
ContentElement.StylusButtonUpEvent
ContentElement.StylusDownEvent
ContentElement.StylusEnterEvent
ContentElement.StylusInAirMoveEvent
ContentElement.StylusInRangeEvent
ContentElement.StylusLeaveEvent
ContentElement.StylusMoveEvent
ContentElement.StylusOutOfRangeEvent
ContentElement.StylusSystemGestureEvent
ContentElement.StylusUpEvent
ContentElement.TextInputEvent
ContentElement.TouchDownEvent
ContentElement.TouchEnterEvent
ContentElement.TouchLeaveEvent
ContentElement.TouchMoveEvent
ContentElement.TouchUpEvent
ContentElement.AddHandler(RoutedEvent, Delegate)
ContentElement.AddHandler(RoutedEvent, Delegate, bool)
ContentElement.AddToEventRoute(EventRoute, RoutedEventArgs)
ContentElement.ApplyAnimationClock(DependencyProperty, AnimationClock)
ContentElement.ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)
ContentElement.BeginAnimation(DependencyProperty, AnimationTimeline)
ContentElement.BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)
ContentElement.CaptureMouse()
ContentElement.CaptureStylus()
ContentElement.CaptureTouch(TouchDevice)
ContentElement.Focus()
ContentElement.GetAnimationBaseValue(DependencyProperty)
ContentElement.OnCreateAutomationPeer()
ContentElement.OnDragEnter(DragEventArgs)
ContentElement.OnDragLeave(DragEventArgs)
ContentElement.OnDragOver(DragEventArgs)
ContentElement.OnDrop(DragEventArgs)
ContentElement.OnGiveFeedback(GiveFeedbackEventArgs)
ContentElement.OnGotKeyboardFocus(KeyboardFocusChangedEventArgs)
ContentElement.OnGotMouseCapture(MouseEventArgs)
ContentElement.OnGotStylusCapture(StylusEventArgs)
ContentElement.OnGotTouchCapture(TouchEventArgs)
ContentElement.OnIsKeyboardFocusedChanged(DependencyPropertyChangedEventArgs)
ContentElement.OnIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventArgs)
ContentElement.OnIsMouseCapturedChanged(DependencyPropertyChangedEventArgs)
ContentElement.OnIsMouseCaptureWithinChanged(DependencyPropertyChangedEventArgs)
ContentElement.OnIsMouseDirectlyOverChanged(DependencyPropertyChangedEventArgs)
ContentElement.OnIsStylusCapturedChanged(DependencyPropertyChangedEventArgs)
ContentElement.OnIsStylusCaptureWithinChanged(DependencyPropertyChangedEventArgs)
ContentElement.OnIsStylusDirectlyOverChanged(DependencyPropertyChangedEventArgs)
ContentElement.OnKeyDown(KeyEventArgs)
ContentElement.OnKeyUp(KeyEventArgs)
ContentElement.OnLostFocus(RoutedEventArgs)
ContentElement.OnLostKeyboardFocus(KeyboardFocusChangedEventArgs)
ContentElement.OnLostMouseCapture(MouseEventArgs)
ContentElement.OnLostStylusCapture(StylusEventArgs)
ContentElement.OnLostTouchCapture(TouchEventArgs)
ContentElement.OnMouseDown(MouseButtonEventArgs)
ContentElement.OnMouseEnter(MouseEventArgs)
ContentElement.OnMouseLeave(MouseEventArgs)
ContentElement.OnMouseLeftButtonDown(MouseButtonEventArgs)
ContentElement.OnMouseLeftButtonUp(MouseButtonEventArgs)
ContentElement.OnMouseMove(MouseEventArgs)
ContentElement.OnMouseRightButtonDown(MouseButtonEventArgs)
ContentElement.OnMouseRightButtonUp(MouseButtonEventArgs)
ContentElement.OnMouseUp(MouseButtonEventArgs)
ContentElement.OnMouseWheel(MouseWheelEventArgs)
ContentElement.OnPreviewDragEnter(DragEventArgs)
ContentElement.OnPreviewDragLeave(DragEventArgs)
ContentElement.OnPreviewDragOver(DragEventArgs)
ContentElement.OnPreviewDrop(DragEventArgs)
ContentElement.OnPreviewGiveFeedback(GiveFeedbackEventArgs)
ContentElement.OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs)
ContentElement.OnPreviewKeyDown(KeyEventArgs)
ContentElement.OnPreviewKeyUp(KeyEventArgs)
ContentElement.OnPreviewLostKeyboardFocus(KeyboardFocusChangedEventArgs)
ContentElement.OnPreviewMouseDown(MouseButtonEventArgs)
ContentElement.OnPreviewMouseLeftButtonDown(MouseButtonEventArgs)
ContentElement.OnPreviewMouseLeftButtonUp(MouseButtonEventArgs)
ContentElement.OnPreviewMouseMove(MouseEventArgs)
ContentElement.OnPreviewMouseRightButtonDown(MouseButtonEventArgs)
ContentElement.OnPreviewMouseRightButtonUp(MouseButtonEventArgs)
ContentElement.OnPreviewMouseUp(MouseButtonEventArgs)
ContentElement.OnPreviewMouseWheel(MouseWheelEventArgs)
ContentElement.OnPreviewQueryContinueDrag(QueryContinueDragEventArgs)
ContentElement.OnPreviewStylusButtonDown(StylusButtonEventArgs)
ContentElement.OnPreviewStylusButtonUp(StylusButtonEventArgs)
ContentElement.OnPreviewStylusDown(StylusDownEventArgs)
ContentElement.OnPreviewStylusInAirMove(StylusEventArgs)
ContentElement.OnPreviewStylusInRange(StylusEventArgs)
ContentElement.OnPreviewStylusMove(StylusEventArgs)
ContentElement.OnPreviewStylusOutOfRange(StylusEventArgs)
ContentElement.OnPreviewStylusSystemGesture(StylusSystemGestureEventArgs)
ContentElement.OnPreviewStylusUp(StylusEventArgs)
ContentElement.OnPreviewTextInput(TextCompositionEventArgs)
ContentElement.OnPreviewTouchDown(TouchEventArgs)
ContentElement.OnPreviewTouchMove(TouchEventArgs)
ContentElement.OnPreviewTouchUp(TouchEventArgs)
ContentElement.OnQueryContinueDrag(QueryContinueDragEventArgs)
ContentElement.OnQueryCursor(QueryCursorEventArgs)
ContentElement.OnStylusButtonDown(StylusButtonEventArgs)
ContentElement.OnStylusButtonUp(StylusButtonEventArgs)
ContentElement.OnStylusDown(StylusDownEventArgs)
ContentElement.OnStylusEnter(StylusEventArgs)
ContentElement.OnStylusInAirMove(StylusEventArgs)
ContentElement.OnStylusInRange(StylusEventArgs)
ContentElement.OnStylusLeave(StylusEventArgs)
ContentElement.OnStylusMove(StylusEventArgs)
ContentElement.OnStylusOutOfRange(StylusEventArgs)
ContentElement.OnStylusSystemGesture(StylusSystemGestureEventArgs)
ContentElement.OnStylusUp(StylusEventArgs)
ContentElement.OnTextInput(TextCompositionEventArgs)
ContentElement.OnTouchDown(TouchEventArgs)
ContentElement.OnTouchEnter(TouchEventArgs)
ContentElement.OnTouchLeave(TouchEventArgs)
ContentElement.OnTouchMove(TouchEventArgs)
ContentElement.OnTouchUp(TouchEventArgs)
ContentElement.RaiseEvent(RoutedEventArgs)
ContentElement.ReleaseAllTouchCaptures()
ContentElement.ReleaseMouseCapture()
ContentElement.ReleaseStylusCapture()
ContentElement.ReleaseTouchCapture(TouchDevice)
ContentElement.RemoveHandler(RoutedEvent, Delegate)
ContentElement.AllowDrop
ContentElement.AreAnyTouchesCaptured
ContentElement.AreAnyTouchesCapturedWithin
ContentElement.AreAnyTouchesDirectlyOver
ContentElement.AreAnyTouchesOver
ContentElement.CommandBindings
ContentElement.Focusable
ContentElement.HasAnimatedProperties
ContentElement.InputBindings
ContentElement.IsEnabled
ContentElement.IsEnabledCore
ContentElement.IsFocused
ContentElement.IsInputMethodEnabled
ContentElement.IsKeyboardFocused
ContentElement.IsKeyboardFocusWithin
ContentElement.IsMouseCaptured
ContentElement.IsMouseCaptureWithin
ContentElement.IsMouseDirectlyOver
ContentElement.IsMouseOver
ContentElement.IsStylusCaptured
ContentElement.IsStylusCaptureWithin
ContentElement.IsStylusDirectlyOver
ContentElement.IsStylusOver
ContentElement.TouchesCaptured
ContentElement.TouchesCapturedWithin
ContentElement.TouchesDirectlyOver
ContentElement.TouchesOver
ContentElement.DragEnter
ContentElement.DragLeave
ContentElement.DragOver
ContentElement.Drop
ContentElement.FocusableChanged
ContentElement.GiveFeedback
ContentElement.GotFocus
ContentElement.GotKeyboardFocus
ContentElement.GotMouseCapture
ContentElement.GotStylusCapture
ContentElement.GotTouchCapture
ContentElement.IsEnabledChanged
ContentElement.IsKeyboardFocusedChanged
ContentElement.IsKeyboardFocusWithinChanged
ContentElement.IsMouseCapturedChanged
ContentElement.IsMouseCaptureWithinChanged
ContentElement.IsMouseDirectlyOverChanged
ContentElement.IsStylusCapturedChanged
ContentElement.IsStylusCaptureWithinChanged
ContentElement.IsStylusDirectlyOverChanged
ContentElement.KeyDown
ContentElement.KeyUp
ContentElement.LostFocus
ContentElement.LostKeyboardFocus
ContentElement.LostMouseCapture
ContentElement.LostStylusCapture
ContentElement.LostTouchCapture
ContentElement.MouseDown
ContentElement.MouseEnter
ContentElement.MouseLeave
ContentElement.MouseLeftButtonDown
ContentElement.MouseLeftButtonUp
ContentElement.MouseMove
ContentElement.MouseRightButtonDown
ContentElement.MouseRightButtonUp
ContentElement.MouseUp
ContentElement.MouseWheel
ContentElement.PreviewDragEnter
ContentElement.PreviewDragLeave
ContentElement.PreviewDragOver
ContentElement.PreviewDrop
ContentElement.PreviewGiveFeedback
ContentElement.PreviewGotKeyboardFocus
ContentElement.PreviewKeyDown
ContentElement.PreviewKeyUp
ContentElement.PreviewLostKeyboardFocus
ContentElement.PreviewMouseDown
ContentElement.PreviewMouseLeftButtonDown
ContentElement.PreviewMouseLeftButtonUp
ContentElement.PreviewMouseMove
ContentElement.PreviewMouseRightButtonDown
ContentElement.PreviewMouseRightButtonUp
ContentElement.PreviewMouseUp
ContentElement.PreviewMouseWheel
ContentElement.PreviewQueryContinueDrag
ContentElement.PreviewStylusButtonDown
ContentElement.PreviewStylusButtonUp
ContentElement.PreviewStylusDown
ContentElement.PreviewStylusInAirMove
ContentElement.PreviewStylusInRange
ContentElement.PreviewStylusMove
ContentElement.PreviewStylusOutOfRange
ContentElement.PreviewStylusSystemGesture
ContentElement.PreviewStylusUp
ContentElement.PreviewTextInput
ContentElement.PreviewTouchDown
ContentElement.PreviewTouchMove
ContentElement.PreviewTouchUp
ContentElement.QueryContinueDrag
ContentElement.QueryCursor
ContentElement.StylusButtonDown
ContentElement.StylusButtonUp
ContentElement.StylusDown
ContentElement.StylusEnter
ContentElement.StylusInAirMove
ContentElement.StylusInRange
ContentElement.StylusLeave
ContentElement.StylusMove
ContentElement.StylusOutOfRange
ContentElement.StylusSystemGesture
ContentElement.StylusUp
ContentElement.TextInput
ContentElement.TouchDown
ContentElement.TouchEnter
ContentElement.TouchLeave
ContentElement.TouchMove
ContentElement.TouchUp
DependencyObject.ClearValue(DependencyProperty)
DependencyObject.ClearValue(DependencyPropertyKey)
DependencyObject.CoerceValue(DependencyProperty)
DependencyObject.Equals(object)
DependencyObject.GetHashCode()
DependencyObject.GetLocalValueEnumerator()
DependencyObject.GetValue(DependencyProperty)
DependencyObject.InvalidateProperty(DependencyProperty)
DependencyObject.ReadLocalValue(DependencyProperty)
DependencyObject.SetCurrentValue(DependencyProperty, object)
DependencyObject.SetValue(DependencyProperty, object)
DependencyObject.SetValue(DependencyPropertyKey, object)
DependencyObject.ShouldSerializeProperty(DependencyProperty)
DependencyObject.DependencyObjectType
DependencyObject.IsSealed
DispatcherObject.Dispatcher
object.Equals(object, object)
object.GetType()
object.MemberwiseClone()
object.ReferenceEquals(object, object)
object.ToString()
Namespace: Phoenix.Aruba.Controls
Assembly: Phoenix.Plugin.Aruba.dll
Syntax
public class TokenInlineUIContainer : InlineUIContainer, IAnimatable, ISupportInitialize, IFrameworkInputElement, IInputElement, IQueryAmbient, IAddChild

Constructors

View Source

TokenInlineUIContainer(TokenizedItemViewModel, DataTemplate, bool, bool, bool)

Initializes a new instance of the TokenInlineUIContainer class.

Declaration
public TokenInlineUIContainer(TokenizedItemViewModel tokenizedItem, DataTemplate tokenTemplate, bool isInDesignMode, bool isComboBox, bool isRichText)
Parameters
Type Name Description
TokenizedItemViewModel tokenizedItem

The tokenized item providing a view model for the token UIElement.

DataTemplate tokenTemplate

The DataTemplate providing a token implementation.

bool isInDesignMode

Whether this is in design mode.

bool isComboBox

Whether this is a combo box.

bool isRichText

Whether this is a Rich Text box.

Fields

View Source

TokenReferenceProperty

Property containing a reference to a token.

Declaration
public static readonly DependencyProperty TokenReferenceProperty
Field Value
Type Description
DependencyProperty

Properties

View Source

TokenReference

Gets or sets a value of this token reference.

Declaration
public TokenReference TokenReference { get; set; }
Property Value
Type Description
TokenReference
View Source

TokenizedItem

Gets or sets the tokenized item that acts as a view model for the token UIElement.

Declaration
public TokenizedItemViewModel TokenizedItem { get; set; }
Property Value
Type Description
TokenizedItemViewModel

Implements

IAnimatable
ISupportInitialize
IFrameworkInputElement
IInputElement
IQueryAmbient
IAddChild
  • View Source
In this article
Back to top Generated by DocFX