定义stringformat时,TextBox不会更新其视觉效果

时间:2014-05-28 14:20:11

标签: c# wpf mvvm

我想将文本框绑定到我的VM上的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);
        }
    }

但是当我在vm上将值设置为Offset时,视图上没有显示任何内容。

如果删除字符串格式,我会在View上显示合适的内容。

  <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上设置偏移?

1 个答案:

答案 0 :(得分:1)

最后你有一个额外的},将其更改为:

StringFormat="{}{0:F2}"

(这可能是在<TextBox Text="{Binding Offset, StringFormat={}{0:F2}}" />

之类的复制过程中遗留下来的