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

本文关键字:视觉 更新 stringformat TextBox 定义 | 更新日期: 2023-09-27 18:05:29

我想在我的虚拟机上绑定一个文本框。在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上设置偏移值时,视图上没有显示任何内容。

如果我删除字符串格式,我在视图上得到合适的显示。

  <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时,TextBox不更新其视觉效果

最后你得到了一个额外的},把它改成:

StringFormat="{}{0:F2}"

(这可能是在复制<TextBox Text="{Binding Offset, StringFormat={}{0:F2}}" />时留下的)