TextBox не обновляет свой визуальный элемент, когда определен формат строки

1

Я хочу привязать текстовое поле к doule на моей виртуальной машине. в XAML у меня есть это:

<TextBox Grid.Row="2" Grid.Column="1"    Margin="0,0,0,5">
        <Binding Path="Offset" UpdateSourceTrigger="PropertyChanged"  Mode="TwoWay" StringFormat="{}{0:F2}}">
            <Binding.ValidationRules>
                <ExceptionValidationRule />
            </Binding.ValidationRules>
        </Binding>
    </TextBox>

и на VM у меня это:

  public double Offset
    {
        get
        {
            return this.offset;
        }

        set
        {
            if (value <= 0)
            {
                throw new Exception("Not Valid!");
            }

            this.offset = value;
            this.NotifyOfPropertyChange(() => this.Offset);
        }
    }

Но когда я устанавливаю значение Offset на vm, ничего не отображается на экране.

Если я удалю строковый формат, я получаю подходящий дисплей в представлении.

  <TextBox Grid.Row="2" Grid.Column="1"    Margin="0,0,0,5">
        <Binding Path="Offset" UpdateSourceTrigger="PropertyChanged"  Mode="TwoWay" >
            <Binding.ValidationRules>
                <ExceptionValidationRule />
            </Binding.ValidationRules>
        </Binding>
    </TextBox>

Как я могу иметь как stringformat, так и также устанавливать смещение на VM?

Теги:
wpf
mvvm

1 ответ

1
Лучший ответ

В конце концов вы получите дополнительный }, измените это на:

StringFormat="{}{0:F2}"

(это, вероятно, осталось во время копирования из-за чего-то вроде <TextBox Text="{Binding Offset, StringFormat={}{0:F2}}"/>)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню