Как я могу связать цвет фона в WPF/XAML?

Если вы изменяете свойство Text для TextBox программно, то оно автоматически ставит каретку в начале. Итак, я думаю, что вы подписались на событие TextChanged в TextBox и поместили некоторый код, подобный myTextBox.Text = "some text";, в обработчик событий.

Когда пользователь изменяет событие Text, TextChanged, ваш обработчик событий снова меняет Text, в результате каретка устанавливается на начало.

Так, это не из-за какой-либо ошибки вашего кода. Это поведение по умолчанию TextBox, в настоящее время, является ли это функция или ошибка, что это спорно.

Я также столкнулся с этим, и мое решение заключалось в том, чтобы программно поместить курсор в конец, если необходимо какое-либо изменение программного текста, с таким кодом в конце обработчика события:

myTextBox.Select(myTextBox.Text.Length, 0);

Надежда, которая помогает .

31
задан Glorfindel 24 May 2019 в 10:05
поделиться

5 ответов

Вы присвоили "Красную" строку. Ваше свойство Background должно иметь цвет шрифта:

using System.Windows;
using System.ComponentModel;

namespace TestBackground88238
{
    public partial class Window1 : Window, INotifyPropertyChanged
    {

        #region ViewModelProperty: Background
        private Color _background;
        public Color Background
        {
            get
            {
                return _background;
            }

            set
            {
                _background = value;
                OnPropertyChanged("Background");
            }
        }
        #endregion

        //...//
}

Тогда можно использовать привязку к SolidColorBrush как это:

public Window1()
{
    InitializeComponent();
    DataContext = this;

    Background = Colors.Red;
    Message = "This is the title, the background should be " + Background.toString() + ".";

}

не 100%, уверенных в .toString () метод на Цветовом объекте. Это могло бы сказать Вам, что это - Цветной Класс, но Вы будете figur это;)

0
ответ дан 27 November 2019 в 21:37
поделиться

Я понял это, это был просто конфликт именования: если вы используете TheBackground вместо Background, он работает так, как было показано в первом примере. Свойство Фоновое изображение нарушает фон свойства "Окно"

.
3
ответ дан 27 November 2019 в 21:37
поделиться

Рекомендую прочитать следующий пост в блоге об отладочной привязке данных: http://beacosta.com/blog/?p=52

И для этого конкретного вопроса: Если вы посмотрите на предупреждения компилятора, то заметите, что в свойстве сокрыто свойство Window.Background (или Control, или любой другой класс, который определяет это свойство).

.
3
ответ дан 27 November 2019 в 21:37
поделиться

Свойство Background ожидает объект Brush, а не строку. Измените тип свойства на Brush и инициализируйте его следующим образом:

Background = new SolidColorBrush(Colors.Red);
22
ответ дан 27 November 2019 в 21:37
поделиться

В качестве имени свойства можно использовать "фон", если только вы дадите своему окну имя и используете это имя в "Источнике" переплета.

0
ответ дан 27 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

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