WPF — настройка элементов управления в игреC#

Место общения программистов C#
Ответить
Anonymous
 WPF — настройка элементов управления в игре

Сообщение Anonymous »

Я делаю локальную многопользовательскую игру на C# WPF. Я борюсь с настраиваемыми пользовательскими элементами управления (ввод клавиш). Сама игра представляет собой базовый Бомбермен. Для 2-3 игроков. Каждый игрок может двигаться вверх, вниз, влево, вправо и ставить бомбу. На уровне представления я создал ControlSettingPage. Я также установил его DataContext в свой экземпляр ViewModel, поэтому привязки должны работать правильно.
Вот представление:

Код: Выделить всё

      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Bomberman.View"
mc:Ignorable="d"
Title="Control Settings">















































Это соответствующая часть ViewModel:

Код: Выделить всё

// Player control properties
public DelegateCommand SaveControlSettingsCommand { get; private set; }
public PlayerControl Player1Controls { get; set; }
public PlayerControl Player2Controls {  get; set; }
public PlayerControl Player3Controls { get; set; }

//In constructor
SaveControlSettingsCommand = new DelegateCommand(param =>  onSaveControlSettings());
//Control settings (also in constructor)
Player1Controls = _model.Player1Controls;
Player2Controls = _model.Player2Controls;
Player3Controls = _model.Player3Controls;

//Event method
private void onSaveControlSettings()
{
_model.SaveControlSettings(Player1Controls,Player2Controls,Player3Controls);
}
Когда я запускаю игру и перехожу в меню «Настройки управления», я получаю длинный список 3 (игроки) * 5 (элементы управления), где текстовые поля заполняются значениями по умолчанию (начальными), настройка управления. Но каждый раз, когда я пытаюсь изменить там значение, мое новое значение мгновенно возвращается к исходному. Каждый раз, когда я вывожу текстовое поле из фокуса, оно переключается обратно.
Я делаю что-то не так в предоставленном мной коде? Если нет, то откуда моя проблема? Я больше нигде не занимаюсь настройками управления. Для него есть только метод сохранения в файле _model. Но это не должно переопределять мои элементы управления PlayerXControls в виртуальной машине.
Поскольку я использую привязку TwoWay, моей первой идеей было проверить, не меняет ли что-то в виртуальной машине элементы управления PlayerControls, но я ничего не нашел .
Пожалуйста, помогите! Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/783 ... e-controls
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»