/trunk/Community.CsharpSqlite.SQLiteClient.WinRT/MetroSQLiteClientTest2/Common/StandardStyles.xaml |
@@ -0,0 +1,1007 @@ |
<!-- |
This file contains XAML styles that simplify application development. |
|
These are not merely convenient, but are required by most Visual Studio project and item templates. |
Removing, renaming, or otherwise modifying the content of these files may result in a project that |
does not build, or that will not build once additional pages are added. If variations on these |
styles are desired it is recommended that you copy the content under a new name and modify your |
private copy. |
--> |
|
<ResourceDictionary |
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> |
|
<!-- Non-brush values that vary across themes --> |
|
<ResourceDictionary.ThemeDictionaries> |
<ResourceDictionary x:Key="Default"> |
<x:String x:Key="BackButtonGlyph"></x:String> |
<x:String x:Key="BackButtonSnappedGlyph"></x:String> |
</ResourceDictionary> |
|
<ResourceDictionary x:Key="HighContrast"> |
<x:String x:Key="BackButtonGlyph"></x:String> |
<x:String x:Key="BackButtonSnappedGlyph"></x:String> |
</ResourceDictionary> |
</ResourceDictionary.ThemeDictionaries> |
|
<!-- RichTextBlock styles --> |
|
<Style x:Key="BasicRichTextStyle" TargetType="RichTextBlock"> |
<Setter Property="Foreground" Value="{StaticResource ApplicationForegroundThemeBrush}"/> |
<Setter Property="FontSize" Value="{StaticResource ControlContentThemeFontSize}"/> |
<Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/> |
<Setter Property="TextTrimming" Value="WordEllipsis"/> |
<Setter Property="TextWrapping" Value="Wrap"/> |
<Setter Property="Typography.StylisticSet20" Value="True"/> |
<Setter Property="Typography.DiscretionaryLigatures" Value="True"/> |
<Setter Property="Typography.CaseSensitiveForms" Value="True"/> |
</Style> |
|
<Style x:Key="BaselineRichTextStyle" TargetType="RichTextBlock" BasedOn="{StaticResource BasicRichTextStyle}"> |
<Setter Property="LineHeight" Value="20"/> |
<Setter Property="LineStackingStrategy" Value="BlockLineHeight"/> |
<!-- Properly align text along its baseline --> |
<Setter Property="RenderTransform"> |
<Setter.Value> |
<TranslateTransform X="-1" Y="4"/> |
</Setter.Value> |
</Setter> |
</Style> |
|
<Style x:Key="ItemRichTextStyle" TargetType="RichTextBlock" BasedOn="{StaticResource BaselineRichTextStyle}"/> |
|
<Style x:Key="BodyRichTextStyle" TargetType="RichTextBlock" BasedOn="{StaticResource BaselineRichTextStyle}"> |
<Setter Property="FontWeight" Value="SemiLight"/> |
</Style> |
|
<!-- TextBlock styles --> |
|
<Style x:Key="BasicTextStyle" TargetType="TextBlock"> |
<Setter Property="Foreground" Value="{StaticResource ApplicationForegroundThemeBrush}"/> |
<Setter Property="FontSize" Value="{StaticResource ControlContentThemeFontSize}"/> |
<Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/> |
<Setter Property="TextTrimming" Value="WordEllipsis"/> |
<Setter Property="TextWrapping" Value="Wrap"/> |
<Setter Property="Typography.StylisticSet20" Value="True"/> |
<Setter Property="Typography.DiscretionaryLigatures" Value="True"/> |
<Setter Property="Typography.CaseSensitiveForms" Value="True"/> |
</Style> |
|
<Style x:Key="BaselineTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BasicTextStyle}"> |
<Setter Property="LineHeight" Value="20"/> |
<Setter Property="LineStackingStrategy" Value="BlockLineHeight"/> |
<!-- Properly align text along its baseline --> |
<Setter Property="RenderTransform"> |
<Setter.Value> |
<TranslateTransform X="-1" Y="4"/> |
</Setter.Value> |
</Setter> |
</Style> |
|
<Style x:Key="HeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> |
<Setter Property="FontSize" Value="56"/> |
<Setter Property="FontWeight" Value="Light"/> |
<Setter Property="LineHeight" Value="40"/> |
<Setter Property="RenderTransform"> |
<Setter.Value> |
<TranslateTransform X="-2" Y="8"/> |
</Setter.Value> |
</Setter> |
</Style> |
|
<Style x:Key="SubheaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> |
<Setter Property="FontSize" Value="26.667"/> |
<Setter Property="FontWeight" Value="Light"/> |
<Setter Property="LineHeight" Value="30"/> |
<Setter Property="RenderTransform"> |
<Setter.Value> |
<TranslateTransform X="-1" Y="6"/> |
</Setter.Value> |
</Setter> |
</Style> |
|
<Style x:Key="TitleTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> |
<Setter Property="FontWeight" Value="SemiBold"/> |
</Style> |
|
<Style x:Key="ItemTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"/> |
|
<Style x:Key="BodyTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> |
<Setter Property="FontWeight" Value="SemiLight"/> |
</Style> |
|
<Style x:Key="CaptionTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"> |
<Setter Property="FontSize" Value="12"/> |
<Setter Property="Foreground" Value="{StaticResource ApplicationSecondaryForegroundThemeBrush}"/> |
</Style> |
|
<!-- Button styles --> |
|
<!-- |
TextButtonStyle is used to style a Button using subheader-styled text with no other adornment. This |
style is used in the GroupedItemsPage as a group header and in the FileOpenPickerPage for triggering |
commands. |
--> |
<Style x:Key="TextButtonStyle" TargetType="Button"> |
<Setter Property="MinWidth" Value="0"/> |
<Setter Property="MinHeight" Value="0"/> |
<Setter Property="Template"> |
<Setter.Value> |
<ControlTemplate TargetType="Button"> |
<Grid Background="Transparent"> |
<TextBlock |
x:Name="Text" |
Text="{TemplateBinding Content}" |
Margin="3,-7,3,10" |
TextWrapping="NoWrap" |
Style="{StaticResource SubheaderTextStyle}"/> |
<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 x:Name="CommonStates"> |
<VisualState x:Name="Normal"/> |
<VisualState x:Name="PointerOver"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPointerOverForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Pressed"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPressedForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Disabled"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonDisabledForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
</VisualStateGroup> |
<VisualStateGroup x:Name="FocusStates"> |
<VisualState x:Name="Focused"> |
<Storyboard> |
<DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualWhite" Storyboard.TargetProperty="Opacity"/> |
<DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Opacity"/> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Unfocused"/> |
</VisualStateGroup> |
</VisualStateManager.VisualStateGroups> |
</Grid> |
</ControlTemplate> |
</Setter.Value> |
</Setter> |
</Style> |
|
<!-- |
TextRadioButtonStyle is used to style a RadioButton using subheader-styled text with no other adornment. |
This style is used in the SearchResultsPage to allow selection among filters. |
--> |
<Style x:Key="TextRadioButtonStyle" TargetType="RadioButton"> |
<Setter Property="MinWidth" Value="0"/> |
<Setter Property="MinHeight" Value="0"/> |
<Setter Property="Margin" Value="0,0,30,0"/> |
<Setter Property="Template"> |
<Setter.Value> |
<ControlTemplate TargetType="RadioButton"> |
<Grid Background="Transparent"> |
<TextBlock |
x:Name="Text" |
Text="{TemplateBinding Content}" |
Margin="3,-7,3,10" |
TextWrapping="NoWrap" |
Style="{StaticResource SubheaderTextStyle}"/> |
<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 x:Name="CommonStates"> |
<VisualState x:Name="Normal"/> |
<VisualState x:Name="PointerOver"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPointerOverForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Pressed"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPressedForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Disabled"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonDisabledForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
</VisualStateGroup> |
<VisualStateGroup x:Name="FocusStates"> |
<VisualState x:Name="Focused"> |
<Storyboard> |
<DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualWhite" Storyboard.TargetProperty="Opacity"/> |
<DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Opacity"/> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Unfocused"/> |
</VisualStateGroup> |
<VisualStateGroup x:Name="CheckStates"> |
<VisualState x:Name="Checked"/> |
<VisualState x:Name="Unchecked"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationSecondaryForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Indeterminate"/> |
</VisualStateGroup> |
</VisualStateManager.VisualStateGroups> |
</Grid> |
</ControlTemplate> |
</Setter.Value> |
</Setter> |
</Style> |
|
<!-- |
AppBarButtonStyle is used to style a Button for use in an App Bar. Content will be centered and should fit within |
the 40-pixel radius glyph provided. 16-point Segoe UI Symbol is used for content text to simplify the use of glyphs |
from that font. AutomationProperties.Name is used for the text below the glyph. |
--> |
<Style x:Key="AppBarButtonStyle" TargetType="Button"> |
<Setter Property="Foreground" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> |
<Setter Property="VerticalAlignment" Value="Stretch"/> |
<Setter Property="FontFamily" Value="Segoe UI Symbol"/> |
<Setter Property="FontWeight" Value="Normal"/> |
<Setter Property="FontSize" Value="20"/> |
<Setter Property="AutomationProperties.ItemType" Value="App Bar Button"/> |
<Setter Property="Template"> |
<Setter.Value> |
<ControlTemplate TargetType="Button"> |
<Grid x:Name="RootGrid" Width="100" Background="Transparent"> |
<StackPanel VerticalAlignment="Top" Margin="0,12,0,11"> |
<Grid Width="40" Height="40" Margin="0,0,0,5" HorizontalAlignment="Center"> |
<TextBlock x:Name="BackgroundGlyph" Text="" FontFamily="Segoe UI Symbol" FontSize="53.333" Margin="-4,-19,0,0" Foreground="{StaticResource AppBarItemBackgroundThemeBrush}"/> |
<TextBlock x:Name="OutlineGlyph" Text="" FontFamily="Segoe UI Symbol" FontSize="53.333" Margin="-4,-19,0,0"/> |
<ContentPresenter x:Name="Content" HorizontalAlignment="Center" Margin="-1,-1,0,0" VerticalAlignment="Center"/> |
</Grid> |
<TextBlock |
x:Name="TextLabel" |
Text="{TemplateBinding AutomationProperties.Name}" |
Foreground="{StaticResource AppBarItemForegroundThemeBrush}" |
Margin="0,0,2,0" |
FontSize="12" |
TextAlignment="Center" |
Width="88" |
MaxHeight="32" |
TextTrimming="WordEllipsis" |
Style="{StaticResource BasicTextStyle}"/> |
</StackPanel> |
<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 x:Name="ApplicationViewStates"> |
<VisualState x:Name="FullScreenLandscape"/> |
<VisualState x:Name="Filled"/> |
<VisualState x:Name="FullScreenPortrait"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextLabel" Storyboard.TargetProperty="Visibility"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> |
</ObjectAnimationUsingKeyFrames> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Width"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="60"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Snapped"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextLabel" Storyboard.TargetProperty="Visibility"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> |
</ObjectAnimationUsingKeyFrames> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Width"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="60"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
</VisualStateGroup> |
<VisualStateGroup x:Name="CommonStates"> |
<VisualState x:Name="Normal"/> |
<VisualState x:Name="PointerOver"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPointerOverBackgroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPointerOverForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Pressed"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="OutlineGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPressedForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Disabled"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="OutlineGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemDisabledForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemDisabledForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextLabel" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemDisabledForegroundThemeBrush}"/> |
</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> |
|
<!-- Standard App Bar buttons --> |
|
<Style x:Key="SkipBackAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="SkipBackAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Skip Back"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="SkipAheadAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="SkipAheadAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Skip Ahead"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="PlayAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="PlayAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Play"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="PauseAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="PauseAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Pause"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="EditAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="EditAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Edit"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="SaveAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="SaveAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Save"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="DeleteAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="DeleteAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Delete"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="DiscardAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="DiscardAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Discard"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="RemoveAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="RemoveAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Remove"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="AddAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="AddAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Add"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="NoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="NoAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="No"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="YesAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="YesAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Yes"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="MoreAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="MoreAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="More"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="RedoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="RedoAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Redo"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="UndoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="UndoAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Undo"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="HomeAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="HomeAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Home"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="OutAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="OutAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Out"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="NextAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="NextAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Next"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="PreviousAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="PreviousAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Previous"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="FavoriteAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="FavoriteAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Favorite"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="PhotoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="PhotoAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Photo"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="SettingsAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="SettingsAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Settings"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="VideoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="VideoAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Video"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="RefreshAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="RefreshAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Refresh"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="DownloadAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="DownloadAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Download"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="MailAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="MailAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Mail"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="SearchAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="SearchAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Search"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="HelpAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="HelpAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Help"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="UploadAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="UploadAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Upload"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="PinAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="PinAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Pin"/> |
<Setter Property="Content" Value=""/> |
</Style> |
<Style x:Key="UnpinAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> |
<Setter Property="AutomationProperties.AutomationId" Value="UnpinAppBarButton"/> |
<Setter Property="AutomationProperties.Name" Value="Unpin"/> |
<Setter Property="Content" Value=""/> |
</Style> |
|
<!-- Title area styles --> |
|
<Style x:Key="PageHeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource HeaderTextStyle}"> |
<Setter Property="TextWrapping" Value="NoWrap"/> |
<Setter Property="VerticalAlignment" Value="Bottom"/> |
<Setter Property="Margin" Value="0,0,30,40"/> |
</Style> |
|
<Style x:Key="PageSubheaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource SubheaderTextStyle}"> |
<Setter Property="TextWrapping" Value="NoWrap"/> |
<Setter Property="VerticalAlignment" Value="Bottom"/> |
<Setter Property="Margin" Value="0,0,0,40"/> |
</Style> |
|
<Style x:Key="SnappedPageHeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource PageSubheaderTextStyle}"> |
<Setter Property="Margin" Value="0,0,18,40"/> |
</Style> |
|
<!-- |
BackButtonStyle is used to style a Button for use in the title area of a page. Margins appropriate for |
the conventional page layout are included as part of the style. |
--> |
<Style x:Key="BackButtonStyle" TargetType="Button"> |
<Setter Property="MinWidth" Value="0"/> |
<Setter Property="Width" Value="48"/> |
<Setter Property="Height" Value="48"/> |
<Setter Property="Margin" Value="36,0,36,36"/> |
<Setter Property="VerticalAlignment" Value="Bottom"/> |
<Setter Property="FontFamily" Value="Segoe UI Symbol"/> |
<Setter Property="FontWeight" Value="Normal"/> |
<Setter Property="FontSize" Value="56"/> |
<Setter Property="AutomationProperties.AutomationId" Value="BackButton"/> |
<Setter Property="AutomationProperties.Name" Value="Back"/> |
<Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/> |
<Setter Property="Template"> |
<Setter.Value> |
<ControlTemplate TargetType="Button"> |
<Grid x:Name="RootGrid"> |
<Grid Margin="-1,-16,0,0"> |
<TextBlock x:Name="BackgroundGlyph" Text="" Foreground="{StaticResource BackButtonBackgroundThemeBrush}"/> |
<TextBlock x:Name="NormalGlyph" Text="{StaticResource BackButtonGlyph}" Foreground="{StaticResource BackButtonForegroundThemeBrush}"/> |
<TextBlock x:Name="ArrowGlyph" Text="" Foreground="{StaticResource BackButtonPressedForegroundThemeBrush}" Opacity="0"/> |
</Grid> |
<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 x:Name="CommonStates"> |
<VisualState x:Name="Normal" /> |
<VisualState x:Name="PointerOver"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverBackgroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Pressed"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
<DoubleAnimation |
Storyboard.TargetName="ArrowGlyph" |
Storyboard.TargetProperty="Opacity" |
To="1" |
Duration="0"/> |
<DoubleAnimation |
Storyboard.TargetName="NormalGlyph" |
Storyboard.TargetProperty="Opacity" |
To="0" |
Duration="0"/> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Disabled"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Visibility"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> |
</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> |
|
<!-- |
PortraitBackButtonStyle is used to style a Button for use in the title area of a portrait page. Margins appropriate |
for the conventional page layout are included as part of the style. |
--> |
<Style x:Key="PortraitBackButtonStyle" TargetType="Button" BasedOn="{StaticResource BackButtonStyle}"> |
<Setter Property="Margin" Value="26,0,26,36"/> |
</Style> |
|
<!-- |
SnappedBackButtonStyle is used to style a Button for use in the title area of a snapped page. Margins appropriate |
for the conventional page layout are included as part of the style. |
|
The obvious duplication here is necessary as the glyphs used in snapped are not merely smaller versions of the same |
glyph but are actually distinct. |
--> |
<Style x:Key="SnappedBackButtonStyle" TargetType="Button"> |
<Setter Property="MinWidth" Value="0"/> |
<Setter Property="Margin" Value="20,0,0,0"/> |
<Setter Property="VerticalAlignment" Value="Bottom"/> |
<Setter Property="FontFamily" Value="Segoe UI Symbol"/> |
<Setter Property="FontWeight" Value="Normal"/> |
<Setter Property="FontSize" Value="26.66667"/> |
<Setter Property="AutomationProperties.AutomationId" Value="BackButton"/> |
<Setter Property="AutomationProperties.Name" Value="Back"/> |
<Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/> |
<Setter Property="Template"> |
<Setter.Value> |
<ControlTemplate TargetType="Button"> |
<Grid x:Name="RootGrid" Width="36" Height="36" Margin="-3,0,7,33"> |
<Grid Margin="-1,-1,0,0"> |
<TextBlock x:Name="BackgroundGlyph" Text="" Foreground="{StaticResource BackButtonBackgroundThemeBrush}"/> |
<TextBlock x:Name="NormalGlyph" Text="{StaticResource BackButtonSnappedGlyph}" Foreground="{StaticResource BackButtonForegroundThemeBrush}"/> |
<TextBlock x:Name="ArrowGlyph" Text="" Foreground="{StaticResource BackButtonPressedForegroundThemeBrush}" Opacity="0"/> |
</Grid> |
<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 x:Name="CommonStates"> |
<VisualState x:Name="Normal" /> |
<VisualState x:Name="PointerOver"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverBackgroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Pressed"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonForegroundThemeBrush}"/> |
</ObjectAnimationUsingKeyFrames> |
<DoubleAnimation |
Storyboard.TargetName="ArrowGlyph" |
Storyboard.TargetProperty="Opacity" |
To="1" |
Duration="0"/> |
<DoubleAnimation |
Storyboard.TargetName="NormalGlyph" |
Storyboard.TargetProperty="Opacity" |
To="0" |
Duration="0"/> |
</Storyboard> |
</VisualState> |
<VisualState x:Name="Disabled"> |
<Storyboard> |
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Visibility"> |
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> |
</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> |
|
<!-- Item templates --> |
|
<!-- Grid-appropriate 250 pixel square item template as seen in the GroupedItemsPage and ItemsPage --> |
<DataTemplate x:Key="Standard250x250ItemTemplate"> |
<Grid HorizontalAlignment="Left" Width="250" Height="250"> |
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}"> |
<Image Source="{Binding Image}" Stretch="UniformToFill"/> |
</Border> |
<StackPanel VerticalAlignment="Bottom" Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}"> |
<TextBlock Text="{Binding Title}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextStyle}" Height="60" Margin="15,0,15,0"/> |
<TextBlock Text="{Binding Subtitle}" Foreground="{StaticResource ListViewItemOverlaySecondaryForegroundThemeBrush}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Margin="15,0,15,10"/> |
</StackPanel> |
</Grid> |
</DataTemplate> |
|
<!-- Grid-appropriate 500 by 130 pixel item template as seen in the GroupDetailPage --> |
<DataTemplate x:Key="Standard500x130ItemTemplate"> |
<Grid Height="110" Width="480" Margin="10"> |
<Grid.ColumnDefinitions> |
<ColumnDefinition Width="Auto"/> |
<ColumnDefinition Width="*"/> |
</Grid.ColumnDefinitions> |
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110"> |
<Image Source="{Binding Image}" Stretch="UniformToFill"/> |
</Border> |
<StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0"> |
<TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextStyle}" TextWrapping="NoWrap"/> |
<TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/> |
<TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" MaxHeight="60"/> |
</StackPanel> |
</Grid> |
</DataTemplate> |
|
<!-- List-appropriate 130 pixel high item template as seen in the SplitPage --> |
<DataTemplate x:Key="Standard130ItemTemplate"> |
<Grid Height="110" Margin="6"> |
<Grid.ColumnDefinitions> |
<ColumnDefinition Width="Auto"/> |
<ColumnDefinition Width="*"/> |
</Grid.ColumnDefinitions> |
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110"> |
<Image Source="{Binding Image}" Stretch="UniformToFill"/> |
</Border> |
<StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0"> |
<TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextStyle}" TextWrapping="NoWrap"/> |
<TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/> |
<TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" MaxHeight="60"/> |
</StackPanel> |
</Grid> |
</DataTemplate> |
|
<!-- |
List-appropriate 80 pixel high item template as seen in the SplitPage when Filled, and |
the following pages when snapped: GroupedItemsPage, GroupDetailPage, and ItemsPage |
--> |
<DataTemplate x:Key="Standard80ItemTemplate"> |
<Grid Margin="6"> |
<Grid.ColumnDefinitions> |
<ColumnDefinition Width="Auto"/> |
<ColumnDefinition Width="*"/> |
</Grid.ColumnDefinitions> |
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="60" Height="60"> |
<Image Source="{Binding Image}" Stretch="UniformToFill"/> |
</Border> |
<StackPanel Grid.Column="1" Margin="10,0,0,0"> |
<TextBlock Text="{Binding Title}" Style="{StaticResource ItemTextStyle}" MaxHeight="40"/> |
<TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/> |
</StackPanel> |
</Grid> |
</DataTemplate> |
|
<!-- Grid-appropriate 300 by 70 pixel item template as seen in the SearchResultsPage --> |
<DataTemplate x:Key="StandardSmallIcon300x70ItemTemplate"> |
<Grid Width="294" Margin="6"> |
<Grid.ColumnDefinitions> |
<ColumnDefinition Width="Auto"/> |
<ColumnDefinition Width="*"/> |
</Grid.ColumnDefinitions> |
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="0,0,0,10" Width="40" Height="40"> |
<Image Source="{Binding Image}" Stretch="UniformToFill"/> |
</Border> |
<StackPanel Grid.Column="1" Margin="10,-10,0,0"> |
<TextBlock Text="{Binding Title}" Style="{StaticResource BodyTextStyle}" TextWrapping="NoWrap"/> |
<TextBlock Text="{Binding Subtitle}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/> |
<TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/> |
</StackPanel> |
</Grid> |
</DataTemplate> |
|
<!-- List-appropriate 70 pixel high item template as seen in the SearchResultsPage when Snapped --> |
<DataTemplate x:Key="StandardSmallIcon70ItemTemplate"> |
<Grid Margin="6"> |
<Grid.ColumnDefinitions> |
<ColumnDefinition Width="Auto"/> |
<ColumnDefinition Width="*"/> |
</Grid.ColumnDefinitions> |
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="0,0,0,10" Width="40" Height="40"> |
<Image Source="{Binding Image}" Stretch="UniformToFill"/> |
</Border> |
<StackPanel Grid.Column="1" Margin="10,-10,0,0"> |
<TextBlock Text="{Binding Title}" Style="{StaticResource BodyTextStyle}" TextWrapping="NoWrap"/> |
<TextBlock Text="{Binding Subtitle}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/> |
<TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/> |
</StackPanel> |
</Grid> |
</DataTemplate> |
|
<!-- |
190x130 pixel item template for displaying file previews as seen in the FileOpenPickerPage |
Includes an elaborate tooltip to display title and description text |
--> |
<DataTemplate x:Key="StandardFileWithTooltip190x130ItemTemplate"> |
<Grid> |
<Grid Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}"> |
<Image |
Source="{Binding Image}" |
Width="190" |
Height="130" |
HorizontalAlignment="Center" |
VerticalAlignment="Center" |
Stretch="Uniform"/> |
</Grid> |
<ToolTipService.Placement>Mouse</ToolTipService.Placement> |
<ToolTipService.ToolTip> |
<ToolTip> |
<ToolTip.Style> |
<Style TargetType="ToolTip"> |
<Setter Property="BorderBrush" Value="{StaticResource ToolTipBackgroundThemeBrush}" /> |
<Setter Property="Padding" Value="0" /> |
</Style> |
</ToolTip.Style> |
|
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> |
<Grid.ColumnDefinitions> |
<ColumnDefinition Width="Auto"/> |
<ColumnDefinition Width="*"/> |
</Grid.ColumnDefinitions> |
|
<Grid Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="20"> |
<Image |
Source="{Binding Image}" |
Width="160" |
Height="160" |
HorizontalAlignment="Center" |
VerticalAlignment="Center" |
Stretch="Uniform"/> |
</Grid> |
<StackPanel Width="200" Grid.Column="1" Margin="0,20,20,20"> |
<TextBlock Text="{Binding Title}" TextWrapping="NoWrap" Style="{StaticResource BodyTextStyle}"/> |
<TextBlock Text="{Binding Description}" MaxHeight="140" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" Style="{StaticResource BodyTextStyle}"/> |
</StackPanel> |
</Grid> |
</ToolTip> |
</ToolTipService.ToolTip> |
</Grid> |
</DataTemplate> |
|
<!-- ScrollViewer styles --> |
|
<Style x:Key="HorizontalScrollViewerStyle" TargetType="ScrollViewer"> |
<Setter Property="HorizontalScrollBarVisibility" Value="Auto"/> |
<Setter Property="VerticalScrollBarVisibility" Value="Disabled"/> |
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" /> |
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" /> |
<Setter Property="ScrollViewer.ZoomMode" Value="Disabled" /> |
</Style> |
|
<Style x:Key="VerticalScrollViewerStyle" TargetType="ScrollViewer"> |
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/> |
<Setter Property="VerticalScrollBarVisibility" Value="Auto"/> |
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled" /> |
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled" /> |
<Setter Property="ScrollViewer.ZoomMode" Value="Disabled" /> |
</Style> |
|
<!-- Page layout roots typically use entrance animations and a theme-appropriate background color --> |
|
<Style x:Key="LayoutRootStyle" TargetType="Panel"> |
<Setter Property="Background" Value="{StaticResource ApplicationPageBackgroundThemeBrush}"/> |
<Setter Property="ChildrenTransitions"> |
<Setter.Value> |
<TransitionCollection> |
<EntranceThemeTransition/> |
</TransitionCollection> |
</Setter.Value> |
</Setter> |
</Style> |
</ResourceDictionary> |
/trunk/Community.CsharpSqlite.SQLiteClient.WinRT/MetroSQLiteClientTest2/MainPage.xaml.cs |
@@ -0,0 +1,610 @@ |
using System; |
using System.Collections.Generic; |
using System.Data; |
using System.IO; |
using System.Linq; |
using System.Threading; |
using System.Threading.Tasks; |
using Community.CsharpSqlite.SQLiteClient; |
using Windows.Foundation; |
using Windows.Foundation.Collections; |
using Windows.Storage; |
using Windows.UI; |
using Windows.UI.Popups; |
using Windows.UI.Xaml; |
using Windows.UI.Xaml.Controls; |
using Windows.UI.Xaml.Controls.Primitives; |
using Windows.UI.Xaml.Data; |
using Windows.UI.Xaml.Input; |
using Windows.UI.Xaml.Media; |
using Windows.UI.Xaml.Navigation; |
|
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 |
|
namespace MetroSQLiteClientTest2 |
{ |
/// <summary> |
/// An empty page that can be used on its own or navigated to within a Frame. |
/// </summary> |
public sealed partial class MainPage : Page |
{ |
public MainPage() |
{ |
SyncContext = SynchronizationContext.Current; |
this.InitializeComponent(); |
_testComboBox.Items.Add("Test 1"); |
_testComboBox.Items.Add("Test 2"); |
_testComboBox.Items.Add("Test 3"); |
_testComboBox.Items.Add("Test 4"); |
_testComboBox.Items.Add("Test 5"); |
_testComboBox.Items.Add("Test 6"); |
_testComboBox.Items.Add("Test 7"); |
_testComboBox.Items.Add("Issue 65"); |
_testComboBox.Items.Add("Issue 76"); |
_testComboBox.Items.Add("Issue 86"); |
_testComboBox.Items.Add("Issue 119"); |
_testComboBox.Items.Add("Issue 124"); |
_testComboBox.SelectedIndex = 0; |
} |
|
/// <summary> |
/// Invoked when this page is about to be displayed in a Frame. |
/// </summary> |
/// <param name="e">Event data that describes how this page was reached. The Parameter |
/// property is typically used to configure the page.</param> |
protected override void OnNavigatedTo(NavigationEventArgs e) |
{ |
} |
|
#region Synchronous File Operations |
|
static private bool FileExists(string path) |
{ |
bool exists = true; |
try |
{ |
Task<StorageFile> fileTask = StorageFile.GetFileFromPathAsync(path).AsTask<StorageFile>(); |
fileTask.Wait(); |
} |
catch (Exception e) |
{ |
AggregateException ae = e as AggregateException; |
if(ae != null && ae.InnerException is FileNotFoundException) |
exists = false; |
} |
return exists; |
} |
static private void FileDelete(string path) |
{ |
Task<StorageFile> fileTask = StorageFile.GetFileFromPathAsync(path).AsTask<StorageFile>(); |
fileTask.Wait(); |
fileTask.Result.DeleteAsync().AsTask().Wait(); |
} |
|
#endregion |
|
#region "Logging" Methods |
|
private void ConsoleWriteLine(string value) |
{ |
if (SynchronizationContext.Current != SyncContext) |
{ |
SyncContext.Post(delegate |
{ |
ConsoleWriteLine(value); |
}, null); |
return; |
} |
|
TextBlock block = new TextBlock(); |
block.Text = value; |
_resultsStackPanel.Children.Add(block); |
} |
|
private void ConsoleWriteError(string value) |
{ |
if (SynchronizationContext.Current != SyncContext) |
{ |
SyncContext.Post(delegate |
{ |
ConsoleWriteError(value); |
}, null); |
return; |
} |
|
TextBlock block = new TextBlock(); |
block.Foreground = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0)); |
block.Text = value; |
_resultsStackPanel.Children.Add(block); |
} |
|
#endregion |
|
#region Test1 |
|
public IAsyncAction Test1Async() |
{ |
return Task.Run(() => { Test1(); }).AsAsyncAction(); |
} |
|
public void Test1() |
{ |
try |
{ |
ConsoleWriteLine("Test1 Start."); |
|
ConsoleWriteLine("Create connection..."); |
SqliteConnection con = new SqliteConnection(); |
|
string dbFilename = Path.Combine(ApplicationData.Current.LocalFolder.Path, @"SqliteTest3.db"); |
string cs = string.Format("Version=3,uri=file:{0}", dbFilename); |
|
ConsoleWriteLine(String.Format("Set connection String: {0}", cs)); |
|
if (FileExists(dbFilename)) |
FileDelete(dbFilename); |
|
con.ConnectionString = cs; |
|
ConsoleWriteLine("Open database..."); |
con.Open(); |
|
ConsoleWriteLine("create command..."); |
IDbCommand cmd = con.CreateCommand(); |
|
ConsoleWriteLine("create table TEST_TABLE..."); |
cmd.CommandText = "CREATE TABLE TEST_TABLE ( COLA INTEGER, COLB TEXT, COLC DATETIME )"; |
cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("insert row 1..."); |
cmd.CommandText = "INSERT INTO TEST_TABLE ( COLA, COLB, COLC ) VALUES (123,'ABC','2008-12-31 18:19:20' )"; |
cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("insert row 2..."); |
cmd.CommandText = "INSERT INTO TEST_TABLE ( COLA, COLB, COLC ) VALUES (124,'DEF', '2009-11-16 13:35:36' )"; |
cmd.ExecuteNonQuery(); |
|
//Console.WriteLine("commit..."); |
//cmd.CommandText = "COMMIT"; |
//cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("SELECT data from TEST_TABLE..."); |
cmd.CommandText = "SELECT COLA, COLB, COLC FROM TEST_TABLE"; |
IDataReader reader = cmd.ExecuteReader(); |
int r = 0; |
ConsoleWriteLine("Read the data..."); |
while (reader.Read()) |
{ |
ConsoleWriteLine(String.Format(" Row: {0}", r)); |
int i = reader.GetInt32(reader.GetOrdinal("COLA")); |
ConsoleWriteLine(String.Format(" COLA: {0}", i)); |
|
string s = reader.GetString(reader.GetOrdinal("COLB")); |
ConsoleWriteLine(String.Format(" COLB: {0}", s)); |
|
DateTime dt = reader.GetDateTime(reader.GetOrdinal("COLC")); |
ConsoleWriteLine(String.Format(" COLB: {0}", dt.ToString("MM/dd/yyyy HH:mm:ss"))); |
|
r++; |
} |
ConsoleWriteLine(String.Format("Rows retrieved: {0}", r)); |
|
ConsoleWriteLine("Close and cleanup..."); |
con.Close(); |
con = null; |
|
ConsoleWriteLine("Test1 Done."); |
} |
catch (Exception e) |
{ |
ConsoleWriteError("ERROR: " + e.Message); |
ConsoleWriteError(e.StackTrace); |
} |
} |
|
#endregion |
|
#region Test2 |
|
public IAsyncAction Test2Async() |
{ |
return Task.Run(() => { Test2(); }).AsAsyncAction(); |
} |
|
public void Test2() |
{ |
try |
{ |
ConsoleWriteLine("Test2 Start."); |
|
ConsoleWriteLine("Create connection..."); |
SqliteConnection con = new SqliteConnection(); |
|
string dbFilename = Path.Combine(ApplicationData.Current.LocalFolder.Path, @"SqliteTest3.db"); |
string cs = string.Format("Version=3,uri=file:{0}", dbFilename); |
|
ConsoleWriteLine(String.Format("Set connection String: {0}", cs)); |
|
if (FileExists(dbFilename)) |
FileDelete(dbFilename); |
|
con.ConnectionString = cs; |
|
ConsoleWriteLine("Open database..."); |
con.Open(); |
|
ConsoleWriteLine("create command..."); |
IDbCommand cmd = con.CreateCommand(); |
|
ConsoleWriteLine("create table TEST_TABLE..."); |
cmd.CommandText = "CREATE TABLE TBL ( ID NUMBER, NAME TEXT)"; |
cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("insert row 1..."); |
cmd.CommandText = "INSERT INTO TBL ( ID, NAME ) VALUES (1, 'ONE' )"; |
cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("insert row 2..."); |
cmd.CommandText = "INSERT INTO TBL ( ID, NAME ) VALUES (2, 'ä¸æ–‡' )"; |
cmd.ExecuteNonQuery(); |
|
//Console.WriteLine("commit..."); |
//cmd.CommandText = "COMMIT"; |
//cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("SELECT data from TBL..."); |
cmd.CommandText = "SELECT id,NAME FROM tbl WHERE name = 'ä¸æ–‡'"; |
IDataReader reader = cmd.ExecuteReader(); |
int r = 0; |
ConsoleWriteLine("Read the data..."); |
while (reader.Read()) |
{ |
ConsoleWriteLine(String.Format(" Row: {0}", r)); |
int i = reader.GetInt32(reader.GetOrdinal("ID")); |
ConsoleWriteLine(String.Format(" ID: {0}", i)); |
|
string s = reader.GetString(reader.GetOrdinal("NAME")); |
ConsoleWriteLine(String.Format(" NAME: {0} = {1}", s, s == "ä¸æ–‡")); |
r++; |
} |
ConsoleWriteLine(String.Format("Rows retrieved: {0}", r)); |
|
ConsoleWriteLine("Close and cleanup..."); |
con.Close(); |
con = null; |
|
ConsoleWriteLine("Test2 Done."); |
} |
catch (Exception e) |
{ |
ConsoleWriteError("ERROR: " + e.Message); |
ConsoleWriteError(e.StackTrace); |
} |
} |
|
#endregion |
|
#region Test3 |
|
public IAsyncAction Test3Async() |
{ |
return Task.Run(() => { Test3(); }).AsAsyncAction(); |
} |
|
public void Test3() |
{ |
try |
{ |
|
ConsoleWriteLine("Test3 (Date Paramaters) Start."); |
|
ConsoleWriteLine("Create connection..."); |
SqliteConnection con = new SqliteConnection(); |
|
string dbFilename = Path.Combine(ApplicationData.Current.LocalFolder.Path, @"SqliteTest3.db"); |
string cs = string.Format("Version=3,uri=file:{0}", dbFilename); |
|
ConsoleWriteLine(String.Format("Set connection String: {0}", cs)); |
|
if (FileExists(dbFilename)) |
FileDelete(dbFilename); |
|
con.ConnectionString = cs; |
|
ConsoleWriteLine("Open database..."); |
con.Open(); |
|
ConsoleWriteLine("create command..."); |
IDbCommand cmd = con.CreateCommand(); |
|
ConsoleWriteLine("create table TEST_TABLE..."); |
cmd.CommandText = "CREATE TABLE TBL ( ID NUMBER, DATE_TEXT REAL)"; |
cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("insert ..."); |
cmd.CommandText = "INSERT INTO TBL ( ID, DATE_TEXT) VALUES ( 1, @DATETEXT)"; |
cmd.Parameters.Add( |
new SqliteParameter |
{ |
ParameterName = "@DATETEXT", |
Value = DateTime.Now |
} |
); |
|
cmd.ExecuteNonQuery(); |
|
|
ConsoleWriteLine("SELECT data from TBL..."); |
cmd.CommandText = "SELECT * FROM tbl"; |
IDataReader reader = cmd.ExecuteReader(); |
int r = 0; |
ConsoleWriteLine("Read the data..."); |
while (reader.Read()) |
{ |
ConsoleWriteLine(String.Format(" Row: {0}", r)); |
int i = reader.GetInt32(reader.GetOrdinal("ID")); |
ConsoleWriteLine(String.Format(" ID: {0}", i)); |
|
string s = reader.GetString(reader.GetOrdinal("DATE_TEXT")); |
ConsoleWriteLine(String.Format(" DATE_TEXT: {0}", s)); |
r++; |
} |
ConsoleWriteLine(String.Format("Rows retrieved: {0}", r)); |
|
|
ConsoleWriteLine("Close and cleanup..."); |
con.Close(); |
con = null; |
|
ConsoleWriteLine("Test3 Done."); |
} |
catch (Exception e) |
{ |
ConsoleWriteError("ERROR: " + e.Message); |
ConsoleWriteError(e.StackTrace); |
} |
} |
|
#endregion |
|
#region Test4 |
|
public IAsyncAction Test4Async() |
{ |
return Task.Run(() => { Test4(); }).AsAsyncAction(); |
} |
|
//nSoftware code for Threading |
string connstring_T4; |
public void Test4() |
{ |
string dbFilename = Path.Combine(ApplicationData.Current.LocalFolder.Path, @"threading_t4.db"); |
if (FileExists(dbFilename)) |
FileDelete(dbFilename); |
connstring_T4 = @"Version=3,busy_timeout=100,uri=file:" + dbFilename; |
|
Setup_T4(); |
InsertSameTable_T4(); //concurrent inserts |
SelectorWrite_T4(); //concurrent selects and inserts |
ConsoleWriteLine("Testing for Threading done."); |
} |
private void SelectorWrite_T4() |
{ |
//concurrent reads/writes in the same table, if there were only Selects it would be preferable for the sqlite engine not to lock internally. |
List<Task> tasks = new List<Task>(); |
for (int i = 0; i < 10; i++) |
{ |
Task worker = Task.Factory.StartNew((state) => |
{ |
// Cannot use value of i, since it exceeds the scope of this thread and will be |
// reused by multiple threads |
int aValue = 100 + (int)state; |
int op = aValue % 2; |
ConsoleWriteLine(String.Format("SELECT/INSERT ON Thread {0}", state)); |
|
using (SqliteConnection con = new SqliteConnection()) |
{ |
try |
{ |
con.ConnectionString = connstring_T4; |
con.Open(); |
IDbCommand cmd = con.CreateCommand(); |
if (op == 0) |
{ |
cmd.CommandText = String.Format("Select * FROM ATABLE"); |
cmd.ExecuteReader(); |
} |
else |
{ |
cmd.CommandText = String.Format("INSERT INTO ATABLE ( A, B, C ) VALUES ({0},'threader', '1' )", aValue); |
ConsoleWriteLine(cmd.CommandText); |
cmd.ExecuteNonQuery(); |
} |
} |
catch (Exception e) |
{ |
ConsoleWriteError("ERROR: " + e.Message); |
ConsoleWriteError(e.StackTrace); |
} |
} |
},i); |
tasks.Add(worker); |
} |
ConsoleWriteLine("Waiting for select/write tasks..."); |
Task.WaitAll(tasks.ToArray<Task>()); |
ConsoleWriteLine("All select/write tasks complete"); |
} |
//we need concurrency support on a table level inside of the database file. |
private void InsertSameTable_T4() |
{ |
List<Task> tasks = new List<Task>(); |
for (int i = 0; i < 10; i++) |
{ |
Task worker = Task.Factory.StartNew((state) => |
{ |
// Cannot use value of i, since it exceeds the scope of this thread and will be |
// reused by multiple threads |
|
ConsoleWriteLine(String.Format("INSERTING ON Thread {0}", state)); |
int aValue = (int)state; |
|
using (SqliteConnection con = new SqliteConnection()) |
{ |
try |
{ |
con.ConnectionString = connstring_T4; |
ConsoleWriteLine(String.Format("About to Open Thread {0}", state)); |
con.Open(); |
ConsoleWriteLine(String.Format("Open complete Thread {0}", state)); |
IDbCommand cmd = con.CreateCommand(); |
cmd = con.CreateCommand(); |
cmd.CommandText = String.Format("INSERT INTO ATABLE ( A, B, C ) VALUES ({0},'threader', '1' )", aValue); |
ConsoleWriteLine(cmd.CommandText); |
cmd.ExecuteNonQuery(); |
} |
catch (Exception e) |
{ |
ConsoleWriteError("ERROR: " + e.Message); |
ConsoleWriteError(e.StackTrace); |
} |
} |
},i); |
tasks.Add(worker); |
} |
ConsoleWriteLine("Waiting for insert tasks..."); |
Task.WaitAll(tasks.ToArray<Task>()); |
ConsoleWriteLine("All insert tasks complete"); |
} |
|
private void Setup_T4() |
{ |
using (SqliteConnection con = new SqliteConnection()) |
{ |
con.ConnectionString = connstring_T4; |
con.Open(); |
IDbCommand cmd = con.CreateCommand(); |
cmd = con.CreateCommand(); |
cmd.CommandText = "CREATE TABLE IF NOT EXISTS ATABLE(A integer primary key , B varchar (50), C integer)"; |
cmd.ExecuteNonQuery(); |
cmd.CommandText = "CREATE TABLE IF NOT EXISTS BTABLE(A integer primary key , B varchar (50), C integer)"; |
cmd.ExecuteNonQuery(); |
cmd.CommandText = String.Format("INSERT INTO BTABLE ( A, B, C ) VALUES (6,'threader', '1' )"); |
cmd.ExecuteNonQuery(); |
} |
} |
#endregion |
|
#region Issue 119 |
|
public IAsyncAction Issue_119Async() |
{ |
return Task.Run(() => { Issue_119(); }).AsAsyncAction(); |
} |
|
public void Issue_119() |
{ |
try |
{ |
ConsoleWriteLine("Issue 119 Start."); |
|
ConsoleWriteLine("Create connection..."); |
SqliteConnection con = new SqliteConnection(); |
|
string dbFilename = Path.Combine(ApplicationData.Current.LocalFolder.Path, @"SqliteTest3.db"); |
string cs = string.Format("Version=3,uri=file:{0}", dbFilename); |
|
ConsoleWriteLine(String.Format("Set connection String: {0}", cs)); |
|
if (FileExists(dbFilename)) |
FileDelete(dbFilename); |
|
con.ConnectionString = cs; |
|
ConsoleWriteLine("Open database..."); |
con.Open(); |
|
ConsoleWriteLine("create command..."); |
IDbCommand cmd = con.CreateCommand(); |
|
ConsoleWriteLine("create table TEST_TABLE..."); |
cmd.CommandText = "CREATE TABLE TEST_TABLE ( COLA INTEGER, COLB TEXT, COLC DATETIME )"; |
cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("insert row 1..."); |
cmd.CommandText = "INSERT INTO TEST_TABLE ( COLA, COLB, COLC ) VALUES (123,'ABC','2008-12-31 18:19:20' )"; |
cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("insert row 2..."); |
cmd.CommandText = "INSERT INTO TEST_TABLE ( COLA, COLB, COLC ) VALUES (124,'DEF', '2009-11-16 13:35:36' )"; |
cmd.ExecuteNonQuery(); |
|
ConsoleWriteLine("SELECT data from TEST_TABLE..."); |
cmd.CommandText = "SELECT RowID, COLA, COLB, COLC FROM TEST_TABLE"; |
IDataReader reader = cmd.ExecuteReader(); |
int r = 0; |
ConsoleWriteLine("Read the data..."); |
while (reader.Read()) |
{ |
ConsoleWriteLine(String.Format(" Row: {0}", r)); |
int rowid = reader.GetInt32(reader.GetOrdinal("RowID")); |
ConsoleWriteLine(String.Format(" RowID: {0}", rowid)); |
|
int i = reader.GetInt32(reader.GetOrdinal("COLA")); |
ConsoleWriteLine(String.Format(" COLA: {0}", i)); |
|
string s = reader.GetString(reader.GetOrdinal("COLB")); |
ConsoleWriteLine(String.Format(" COLB: {0}", s)); |
|
DateTime dt = reader.GetDateTime(reader.GetOrdinal("COLC")); |
ConsoleWriteLine(String.Format(" COLB: {0}", dt.ToString("MM/dd/yyyy HH:mm:ss"))); |
|
r++; |
} |
|
ConsoleWriteLine("Close and cleanup..."); |
con.Close(); |
con = null; |
|
ConsoleWriteLine("Issue 119 Done."); |
} |
catch (Exception e) |
{ |
ConsoleWriteError("ERROR: " + e.Message); |
ConsoleWriteError(e.StackTrace); |
} |
} |
#endregion |
|
public SynchronizationContext SyncContext { get; set; } |
|
private async void Button_Click_1(object sender, RoutedEventArgs e) |
{ |
_runButton.IsEnabled = false; |
_resultsStackPanel.Children.Clear(); |
switch (_testComboBox.SelectedItem.ToString()) |
{ |
case "Test 1": |
await Test1Async(); |
break; |
case "Test 2": |
await Test2Async(); |
break; |
case "Test 3": |
await Test3Async(); |
break; |
case "Test 4": |
await Test4Async(); |
break; |
case "Issue 119": |
await Issue_119Async(); |
break; |
|
default: |
await new MessageDialog(_testComboBox.SelectedItem.ToString() + " Not Implemented Yet").ShowAsync(); |
break; |
} |
_runButton.IsEnabled = true; |
} |
|
} |
} |