kreo_OL
@kreo_OL
Медузко -_-

Как сделать двух сторонний Binding vector2 к двум textBox?

Здравствуйте!
Храню координаты на карте и пары мин\макс в переменных типа Vector2.
Появилась необходимость выводить\задавать часть данных на форму.
На форме есть два текстблока, планировалось в один выводить\считывать значение икс вектора, во второй игрек.
Просто так это сделать нельзя, нет доступа к данным вектора. Был написал конвертер который может отдавать нам нужный параметр из вектора в зависимости от указанного аргумента, таким образов вывод информации реализовать получилось.
Но ввод реализовать таким способом не получилось, так как конвертер принимает в себя в таком случае полученное значение, и не знает про вектор. следовательно я не могу полученное значение применить в вектор.

Сейчас я сделал дополнительные свойства во вьюмодели, выглядит это стремно, занимает много места, скорее всего жуткий костыль. Ну и плюс у меня модель с данными выбирается из списка, при выборе происходит обновление и тд и тп, и нужные векторы в этой модели находятся, и следовательно с обновлениями тоже гемор выходит...

Может есть какие то варианты?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
kreo_OL
@kreo_OL Автор вопроса
Медузко -_-
В общем по факту ни как.
Один из самых оптимальных вариантов это создать свойства типа vector2x vector2y в самой модели.
Типа так
public float MapCoorX
        {
            get => MapCoordinate.X;
            set
            {
                MapCoordinate = new Vector2(value, MapCoordinate.Y);
                OnPropertyChanged();
            }
        }

Если векторов несколько, или например это массив из векторов, то можно создать поле SelectVector2, дальше в принципе можно подобрать варианты.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@OwDafuq
В чем сложности?
Судя по оф. документации поле X - публичное, можно биндить как угодно:
<TextBox Text="{Binding Vector.X, Mode=TwoWay}"/>
Либо покажите код с описанием, где именно он не работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы