<!--
	Copyright (c) Microsoft. All rights reserved.
-->

<UserControl
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:mox="using:MOX"
	MaxWidth="320">
	<UserControl.Resources>
		<mox:BasicListItemExecuteActionAfterExecutedHandler x:Key="AfterExecutedHandler" />
		<Style x:Key="ListItemStyle" TargetType="ButtonBase">
			<Setter Property="AutomationProperties.ItemType" Value="Menu Button"/>
			<Setter Property="HorizontalAlignment" Value="Stretch" />
			<Setter Property="Template">
				<Setter.Value>
					<ControlTemplate TargetType="ButtonBase">
						<Grid Background="Transparent">
							<Border x:Name="ItemBorder">
								<TextBlock 
									x:Name="Item"
									Padding="20,11" 
									TextWrapping="Wrap" 
									Text="{TemplateBinding AutomationProperties.Name}" 
									Style="{StaticResource MsoTextBlockSlightEmphasis}" />
							</Border>
							<Rectangle
								x:Name="FocusVisualWhite"
								IsHitTestVisible="False"
								Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}"
								StrokeEndLineCap="Square"
								StrokeDashArray="1,1"
								Opacity="0"
								StrokeDashOffset="1.5"/>
							<Rectangle
								x:Name="FocusVisualBlack"
								IsHitTestVisible="False"
								Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}"
								StrokeEndLineCap="Square"
								StrokeDashArray="1,1"
								Opacity="0"
								StrokeDashOffset="0.5"/>
							<VisualStateManager.VisualStateGroups>
								<VisualStateGroup Name="CommonStates">
									<VisualState x:Name="Normal"/>
									<VisualState x:Name="PointerOver"/>
									<VisualState x:Name="Pressed">
										<Storyboard>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemBorder" Storyboard.TargetProperty="Background">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{CustomResource :mso_brush:2921}"/>
											</ObjectAnimationUsingKeyFrames>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Item" Storyboard.TargetProperty="Foreground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{CustomResource :mso_brush:2890}"/>
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="Disabled">
										<Storyboard>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Item" Storyboard.TargetProperty="Foreground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{CustomResource :mso_brush:2418}"/>
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
								</VisualStateGroup>
								<VisualStateGroup x:Name="FocusStates">
									<VisualState x:Name="Focused">
										<Storyboard>
											<DoubleAnimation
												Storyboard.TargetName="FocusVisualWhite"
												Storyboard.TargetProperty="Opacity"
												To="1"
												Duration="0"/>
											<DoubleAnimation
												Storyboard.TargetName="FocusVisualBlack"
												Storyboard.TargetProperty="Opacity"
												To="1"
												Duration="0"/>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="Unfocused" />
									<VisualState x:Name="PointerFocused" />
								</VisualStateGroup>
							</VisualStateManager.VisualStateGroups>
						</Grid>
					</ControlTemplate>
				</Setter.Value>
			</Setter>
		</Style>
		<Style TargetType="ListBoxItem" x:Key="ItemContainerStyle">
			<Setter Property="Background" Value="Transparent" />
			<Setter Property="IsTabStop" Value="False" />
			<Setter Property="HorizontalContentAlignment" Value="Stretch" />
			<Setter Property="Padding" Value="0" />
			<Setter Property="Template">
				<Setter.Value>
					<ControlTemplate TargetType="ListBoxItem">
						<Border x:Name="LayoutRoot"
							Background="{TemplateBinding Background}"
							BorderBrush="{TemplateBinding BorderBrush}"
							BorderThickness="{TemplateBinding BorderThickness}">
							<VisualStateManager.VisualStateGroups>
								<VisualStateGroup x:Name="SelectionStates">
									<VisualState x:Name="Unselected" />
									<VisualState x:Name="Selected">
										<Storyboard>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid"
																		   Storyboard.TargetProperty="Background">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{CustomResource :mso_brush:2555}" />
											</ObjectAnimationUsingKeyFrames>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemButton"
																		   Storyboard.TargetProperty="Foreground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemSelectedForegroundThemeBrush}" />
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="SelectedUnfocused">
										<Storyboard>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid"
																		   Storyboard.TargetProperty="Background">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{CustomResource :mso_brush:2555}" />
											</ObjectAnimationUsingKeyFrames>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemButton"
																		   Storyboard.TargetProperty="Foreground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemSelectedForegroundThemeBrush}" />
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="SelectedDisabled">
										<Storyboard>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid"
																		   Storyboard.TargetProperty="Background">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{CustomResource :mso_brush:2555}" />
											</ObjectAnimationUsingKeyFrames>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
																		   Storyboard.TargetProperty="Foreground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemSelectedDisabledForegroundThemeBrush}" />
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="SelectedPointerOver">
										<Storyboard>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid"
																		   Storyboard.TargetProperty="Background">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{CustomResource :mso_brush:2533}" />
											</ObjectAnimationUsingKeyFrames>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemButton"
																		   Storyboard.TargetProperty="Foreground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemSelectedForegroundThemeBrush}" />
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
									<VisualState x:Name="SelectedPressed">
										<Storyboard>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid"
																		   Storyboard.TargetProperty="Background">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{CustomResource :mso_brush:2555}" />
											</ObjectAnimationUsingKeyFrames>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemButton"
																		   Storyboard.TargetProperty="Foreground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemSelectedForegroundThemeBrush}" />
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
								</VisualStateGroup>
								<VisualStateGroup Name="CommonStates">
									<VisualState x:Name="Normal"/>
									<VisualState x:Name="Pressed" />
									<VisualState x:Name="Disabled" />
									<VisualState x:Name="PointerOver">
										<Storyboard>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid" Storyboard.TargetProperty="Background">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{CustomResource :mso_brush:2417}"/>
											</ObjectAnimationUsingKeyFrames>
											<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemButton" Storyboard.TargetProperty="Foreground">
												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemPointerOverForegroundThemeBrush}"/>
											</ObjectAnimationUsingKeyFrames>
										</Storyboard>
									</VisualState>
								</VisualStateGroup>
							</VisualStateManager.VisualStateGroups>
							<Grid x:Name="InnerGrid" Background="Transparent">
								<mox:ExecuteAction x:Name="ItemButton"
									Action="OnCommand"
									Style="{StaticResource ListItemStyle}"
									AutomationProperties.Name="{Binding Label, Converter={StaticResource StripAccelerator}}"
									IsEnabled="{Binding Enabled}"
									Visibility="{Binding IsVisible, Converter={StaticResource BoolToVisibility}}"
									AfterExecuted="{StaticResource AfterExecutedHandler}"/>
							</Grid>
						</Border>
					</ControlTemplate>
				</Setter.Value>
			</Setter>
		</Style>
	</UserControl.Resources>
	<Border BorderBrush="{CustomResource :mso_brush:2416}" BorderThickness="2" Background="{CustomResource :mso_brush:2890}" Opacity="1">
		<ListBox ItemsSource="{Binding Items}" IsTabStop="True" BorderThickness="0" MinWidth="80" ItemsControl.ItemContainerStyle="{StaticResource ItemContainerStyle}">
			<ItemsControl.ItemsPanel>
				<ItemsPanelTemplate>
					<StackPanel Margin="0,4,0,6"/>
				</ItemsPanelTemplate>
			</ItemsControl.ItemsPanel>
		</ListBox>
	</Border>
</UserControl>
