0

Ошибки: введите сюда описание изображения

xaml window:

<Window x:Class="prod_bw.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:prod_bw"
        xmlns:models="clr-namespace:prod_bw.Models"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.DataContext>
        <models:Game />
    </Window.DataContext>
    <Grid>
        ...
    </Grid>
</Window>

Код Game:

namespace prod_bw.Models
{
    internal class Game
    {
    public int Kills { get; }
    public int Deaths { get; }

    public Game(int kills, int deaths)
    {
        Kills = kills;
        Deaths = deaths;
    }
}

}

Пробовал реализовывать контекст INotifyPropertyChanged в Game, не помогло. решение постоянно пересобирал.

Структура проекта:

введите сюда описание изображения

kertAW
  • 2,443
  • Ваш конструктор требует 2 аргумента int kills и int deaths. Вы их не можете никак передать создавая класс таким образом в XAML. Поясните, что вы хотите сделать то? И зачем вам такой конструктор? И почему именно свойства неизменяемые, содержат только геттеры { get; }? Проблему решить легко, но только если знать, что за задачу вы решаете. – aepot Apr 24 '23 at 18:04
  • @aepot, хочу создать модель для использования в DataTemplate – kertAW Apr 24 '23 at 18:13

1 Answers1

1

Не вникая в подробности, можно сделать так, убрав конструктор с параметрами, либо сделать конструктор без параметров public Game() { ... }.

public class Game
{
    public int Kills { get; set; }
    public int Deaths { get; set; }
}

То есть сделать класс публичным public, а свойства изменяемыми { get; set; }

Тогда создать класс в XAML можно так

<Window.DataContext>
    <models:Game Kills="5" Deaths="10"/>
</Window.DataContext>

Если нужны нули, то Kills="5" Deaths="10" задавать необязательно, можно убрать.

Затем, если нужно будет чтобы UI контролы могли отслеживать изменения в модели, нужно будет реализовать INotifyPropertyChanged. Подробнее об этом я уже рассказывал и показывал в этом ответе.

aepot
  • 49,560