Add selection boilerplate code

This commit is contained in:
Benjamin Popp 2020-05-07 14:47:48 -05:00
parent 5374da126b
commit 5b88752fb8
3 changed files with 16 additions and 12 deletions

View File

@ -220,10 +220,10 @@ namespace HavenSoft.HexManiac.Core.ViewModels {
public double SpriteScale { get; }
private bool isFilteredOut;
public bool IsFilteredOut {
get => isFilteredOut;
set => TryUpdate(ref isFilteredOut, value);
}
public bool IsFilteredOut { get => isFilteredOut; set => TryUpdate(ref isFilteredOut, value); }
private bool selected;
public bool Selected { get => selected; set => TryUpdate(ref selected, value); }
public SortablePokemon(IDataModel model, int index) {
var sprites = new ModelTable(model, model.GetAddressFromAnchor(new NoDataChangeDeltaModel(), -1, FrontSpritesTable));

View File

@ -16,10 +16,13 @@
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<hshmwpfc:PixelImage x:Name="PixelImage">
<hshmwpfc:PixelImage.Style>
<Style>
<Border BorderThickness="2" Margin="-1" Name="PixelImage">
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding Selected}" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource Accent}"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsFilteredOut}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
@ -38,8 +41,9 @@
</DataTrigger>
</Style.Triggers>
</Style>
</hshmwpfc:PixelImage.Style>
</hshmwpfc:PixelImage>
</Border.Style>
<hshmwpfc:PixelImage/>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

View File

@ -12,7 +12,7 @@ namespace HavenSoft.HexManiac.WPF.Controls {
public DexReorderView() => InitializeComponent();
private const int ExpectedElementWidth = 64, ExpectedElementHeight = 64;
private const int ExpectedElementWidth = 66, ExpectedElementHeight = 66;
private Point interactionPoint;
private void StartElementMove(object sender, MouseButtonEventArgs e) {
@ -23,7 +23,7 @@ namespace HavenSoft.HexManiac.WPF.Controls {
private void ElementMove(object sender, MouseEventArgs e) {
if (!Container.IsMouseCaptured) return;
var tileWidth = (int)(ActualWidth / ExpectedElementWidth);
var tileWidth = (int)(Container.ActualWidth / ExpectedElementWidth);
var oldTileX = (int)(interactionPoint.X / ExpectedElementWidth);
var oldTileY = (int)(interactionPoint.Y / ExpectedElementHeight);
@ -40,7 +40,7 @@ namespace HavenSoft.HexManiac.WPF.Controls {
var tilesToAnimate = viewModel.HandleMove(oldTileIndex, newTileIndex);
foreach(var tile in tilesToAnimate) {
var image = (PixelImage)MainWindow.GetChild(Container, "PixelImage", viewModel.Elements[tile.index]);
var image = MainWindow.GetChild(Container, "PixelImage", viewModel.Elements[tile.index]);
if (!(image.RenderTransform is TranslateTransform)) image.RenderTransform = new TranslateTransform();
var transform = (TranslateTransform)image.RenderTransform;
transform.BeginAnimation(TranslateTransform.XProperty, new DoubleAnimation(ExpectedElementWidth * tile.direction, 0, span));