Нужно добавить изображение коня на поле

Есть 64 клетки и нужно добавить перемещение коня(его изображения) по полю. Я передавал позицию коня через CommandParameter, так и сделал его перемещение, но не могу теперь привязать картинку.

Xaml код:

<Window x:Class="Cursovaya.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:Cursovaya.ViewModels"
    mc:Ignorable="d"
    Title="MainWindow" Height="650" Width="600">
<Window.Resources>
    <Style x:Key="LightCell" TargetType="Button">
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Command" Value="{Binding KnightMove}"/>
        <Setter Property="Background" Value="Bisque"/>
        <Setter Property="BorderBrush" Value="Black"/>
        <Setter Property="Content" Value="123"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" 
                            BorderThickness="{TemplateBinding BorderThickness}"/>

                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderThickness" Value="1"/>
                        </Trigger>

                    </ControlTemplate.Triggers>

                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="DarkCell" TargetType="Button">
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Command" Value="{Binding KnightMove}"/>
        <Setter Property="Background" Value="SandyBrown"/>
        <Setter Property="BorderBrush" Value="Black"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"/>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderThickness" Value="1"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition Height="10*"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="8*"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="8*"/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <Grid Grid.Row="1" Grid.Column="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>


            <Button Style="{StaticResource LightCell}" Grid.Column="0" Grid.Row="0" Content="123" CommandParameter="1"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="1" Grid.Row="0" Content="123" CommandParameter="2"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="2" Grid.Row="0" CommandParameter="3"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="3" Grid.Row="0" CommandParameter="4"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="4" Grid.Row="0" CommandParameter="5"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="5" Grid.Row="0" CommandParameter="6"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="6" Grid.Row="0" CommandParameter="7"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="7" Grid.Row="0" CommandParameter="8"/>

            <Button Style="{StaticResource DarkCell}" Grid.Column="0" Grid.Row="1" CommandParameter="9"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="1" Grid.Row="1" CommandParameter="10"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="2" Grid.Row="1" CommandParameter="11"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="3" Grid.Row="1" CommandParameter="12"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="4" Grid.Row="1" CommandParameter="13"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="5" Grid.Row="1" CommandParameter="14"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="6" Grid.Row="1" CommandParameter="15"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="7" Grid.Row="1" CommandParameter="16"/>

            <Button Style="{StaticResource LightCell}" Grid.Column="0" Grid.Row="2" CommandParameter="17"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="1" Grid.Row="2" CommandParameter="18"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="2" Grid.Row="2" CommandParameter="19"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="3" Grid.Row="2" CommandParameter="20"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="4" Grid.Row="2" CommandParameter="21"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="5" Grid.Row="2" CommandParameter="22"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="6" Grid.Row="2" CommandParameter="23"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="7" Grid.Row="2" CommandParameter="24"/>

            <Button Style="{StaticResource DarkCell}" Grid.Column="0" Grid.Row="3" CommandParameter="25"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="1" Grid.Row="3" CommandParameter="26"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="2" Grid.Row="3" CommandParameter="27"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="3" Grid.Row="3" CommandParameter="28"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="4" Grid.Row="3" CommandParameter="29"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="5" Grid.Row="3" CommandParameter="30"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="6" Grid.Row="3" CommandParameter="31"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="7" Grid.Row="3" CommandParameter="32"/>

            <Button Style="{StaticResource LightCell}" Grid.Column="0" Grid.Row="4" CommandParameter="33"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="1" Grid.Row="4" CommandParameter="34"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="2" Grid.Row="4" CommandParameter="35"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="3" Grid.Row="4" CommandParameter="36"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="4" Grid.Row="4" CommandParameter="37"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="5" Grid.Row="4" CommandParameter="38"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="6" Grid.Row="4" CommandParameter="39"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="7" Grid.Row="4" CommandParameter="40"/>

            <Button Style="{StaticResource DarkCell}" Grid.Column="0" Grid.Row="5" CommandParameter="41"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="1" Grid.Row="5" CommandParameter="42"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="2" Grid.Row="5" CommandParameter="43"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="3" Grid.Row="5" CommandParameter="44"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="4" Grid.Row="5" CommandParameter="45"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="5" Grid.Row="5" CommandParameter="46"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="6" Grid.Row="5" CommandParameter="47"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="7" Grid.Row="5" CommandParameter="48"/>

            <Button Style="{StaticResource LightCell}" Grid.Column="0" Grid.Row="6" CommandParameter="49"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="1" Grid.Row="6" CommandParameter="50"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="2" Grid.Row="6" CommandParameter="51"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="3" Grid.Row="6" CommandParameter="52"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="4" Grid.Row="6" CommandParameter="53"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="5" Grid.Row="6" CommandParameter="54"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="6" Grid.Row="6" CommandParameter="55"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="7" Grid.Row="6" CommandParameter="56"/>

            <Button Style="{StaticResource DarkCell}" Grid.Column="0" Grid.Row="7" CommandParameter="57"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="1" Grid.Row="7" CommandParameter="58"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="2" Grid.Row="7" CommandParameter="59"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="3" Grid.Row="7" CommandParameter="60"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="4" Grid.Row="7" CommandParameter="61"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="5" Grid.Row="7" CommandParameter="62"/>
            <Button Style="{StaticResource DarkCell}" Grid.Column="6" Grid.Row="7" CommandParameter="63"/>
            <Button Style="{StaticResource LightCell}" Grid.Column="7" Grid.Row="7" CommandParameter="64"/>
        </Grid>
    </Grid>
</Grid>

ViewModel

internal class ApplicationViewModel : INotifyPropertyChanged
{
    public ObservableCollection<Board> MyBoard { get; set; }

    private int xKnightPosition = 0; 
    private int yKnightPosition = 0;
    private int[] lastSelectedCell = new int[2]; // первое значение х второе у
    private int[,] myDesk = new int[8,8];
    private bool moveLocker = true;
    public ApplicationViewModel()
    {
        MyBoard = new ObservableCollection<Board>();
        Board board = new Board { XPosition = 4, YPosition = 4, Desk = myDesk }; // задаём начальные значения
        MyBoard.Insert(0, board);
        CreateDesk();
    }
    public void CreateDesk()
    {
        for(int i = 0; i < 8; i++)
        {
            for(int j = 0; j < 8; j++)
            {
                myDesk[i, j] = 0;
            }
        }
        myDesk[MyBoard[0].XPosition, MyBoard[0].YPosition] = 1;
    }
  
    
  
    void SelectedCell(object obj)
    {
        int position = Convert.ToInt32(obj);
        xKnightPosition = 0;
        yKnightPosition = 0;
        bool flag = true;
        while (flag == true)
        {
            if (position <= 8)
            {
                xKnightPosition = position - 1;
                flag = false;
            }
            else
            {
                yKnightPosition++;
                position -= 8;
            }
        }
    }
    public bool IsKnightSelected()
    {
        if (MyBoard[0].Desk[xKnightPosition, yKnightPosition] == 1)
            return true;
        else
            return false;
    }
    public bool CanMove()
    {
        if (xKnightPosition == lastSelectedCell[0] - 1 && yKnightPosition == lastSelectedCell[1] - 2)   // -1 -2
        {
            return true;
        }
        else if (xKnightPosition == lastSelectedCell[0] - 2 && yKnightPosition == lastSelectedCell[1] - 1)   // -2 -1
        {
            return true;
        }
        else if (xKnightPosition == lastSelectedCell[0] - 2 && yKnightPosition == lastSelectedCell[1] + 1)   // -2 +1
        {
            return true;
        }
        else if (xKnightPosition == lastSelectedCell[0] - 1 && yKnightPosition == lastSelectedCell[1] + 2)   // -1 +2
        {
            return true;
        }
        else if (xKnightPosition == lastSelectedCell[0] + 1 && yKnightPosition == lastSelectedCell[1] + 2)   // +1 +2
        {
            return true;
        }
        else if (xKnightPosition == lastSelectedCell[0] + 2 && yKnightPosition == lastSelectedCell[1] + 1)   // +2 +1
        {
            return true;
        }
        else if (xKnightPosition == lastSelectedCell[0] + 2 && yKnightPosition == lastSelectedCell[1] - 1)   // +2 -1
        {
            return true;
        }
        else if (xKnightPosition == lastSelectedCell[0] + 1 && yKnightPosition == lastSelectedCell[1] - 2)   // +1 -2
        {
            return true;
        }
        else
            return false;
    }


    private RelayCommand knightMove;
    public RelayCommand KnightMove
    {
        set { knightMove = value; }
        get { return knightMove ??
                (knightMove = new RelayCommand(obj =>
                {
                    
                    SelectedCell(obj);
                   
                    if (moveLocker == false)
                    {
                        if(CanMove() == true)
                        {
                            Board board = new Board { Desk = myDesk, XPosition = xKnightPosition, YPosition = yKnightPosition };
                            MyBoard.Insert(0, board);
                            CreateDesk();
                        }
                        moveLocker = true;
                    }
                    else if (IsKnightSelected() == true)
                    {
                        moveLocker = false;
                        MessageBox.Show("Knight is hear!");
                    }
                    
                    lastSelectedCell[0] = xKnightPosition;
                    lastSelectedCell[1] = yKnightPosition;

                })) ;
            }
    }



    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged([CallerMemberName] string prop = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
    }

}

Ответы (0 шт):