-
Notifications
You must be signed in to change notification settings - Fork 1
/
PegSelectionComponent.xaml
97 lines (93 loc) · 4.8 KB
/
PegSelectionComponent.xaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?xml version="1.0" encoding="utf-8"?>
<UserControl
x:Class="CodeBreaker.Uno.Views.Components.PegSelectionComponent"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:CodeBreaker.Uno.Views.Components"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vmComponents="using:Codebreaker.ViewModels.Components"
xmlns:toolkitConverters="using:CommunityToolkit.WinUI.Converters"
xmlns:cme="using:CodeBreaker.Uno.CustomMarkupExtensions"
mc:Ignorable="d"
x:Name="ThisControl">
<UserControl.Resources>
<toolkitConverters:BoolToVisibilityConverter x:Key="BoolToVisibility" />
<DataTemplate x:Key="SelectColorTemplate">
<Grid>
<Ellipse Fill="{Binding Mode=OneWay, Converter={StaticResource ColorConverter}}" Width="60" Height="60" />
</Grid>
</DataTemplate>
<DataTemplate x:Key="SelectColorItemTemplate" x:DataType="vmComponents:SelectedFieldViewModel">
<ComboBox
Margin="4"
Width="112" Height="92"
ItemsSource="{Binding ElementName=ThisControl, Path=DataContext.Game.FieldValues[colors], Mode=OneWay}"
SelectedItem="{x:Bind Value, Mode=TwoWay}"
ItemTemplate="{StaticResource SelectColorTemplate}"
PlaceholderText="❓" HorizontalContentAlignment="Center" FontSize="40" />
</DataTemplate>
</UserControl.Resources>
<Grid x:Name="Wrapper" ColumnSpacing="15" RowSpacing="15">
<Grid.ColumnDefinitions>
<ColumnDefinition MaxWidth="500" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="WideState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="800" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="PegComboBoxes.(Grid.Column)" Value="0" />
<Setter Target="MoveSubmitButton.(Grid.Column)" Value="1" />
<Setter Target="PegComboBoxes.(Grid.RowSpan)" Value="2" />
<Setter Target="MoveSubmitButton.(Grid.RowSpan)" Value="2" />
<Setter Target="PegComboBoxes.HorizontalAlignment" Value="Left" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="NarrowState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="PegComboBoxes.(Grid.Row)" Value="0" />
<Setter Target="MoveSubmitButton.(Grid.Row)" Value="1" />
<Setter Target="PegComboBoxes.(Grid.ColumnSpan)" Value="2" />
<Setter Target="MoveSubmitButton.(Grid.ColumnSpan)" Value="2" />
<Setter Target="PegComboBoxes.HorizontalAlignment" Value="Center" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ItemsControl
x:Name="PegComboBoxes"
ItemsSource="{x:Bind Path=ViewModel.Fields, Mode=OneWay}"
ItemTemplate="{StaticResource SelectColorItemTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Horizontal" ItemWidth="112" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<Button
x:Name="MoveSubmitButton"
Margin="4"
Height="92"
MinWidth="120"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Command="{x:Bind ViewModel.SetMoveCommand, Mode=OneTime}">
<StackPanel Orientation="Vertical" Spacing="5">
<SymbolIcon Symbol="Send" Visibility="{x:Bind ViewModel.SetMoveCommand.IsRunning, Mode=OneWay, Converter={StaticResource BoolToVisibility}, ConverterParameter=True}" />
<ProgressRing Visibility="{x:Bind ViewModel.SetMoveCommand.IsRunning, Mode=OneWay}" />
<TextBlock Text="{cme:ResourceString Name=PegSelection_MakeMove}" />
</StackPanel>
</Button>
</Grid>
</UserControl>