我想将文本框绑定(bind)到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 上什么也没有显示。

如果删除字符串格式,则可以在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上设置偏移量?

最佳答案

最后,您得到了一个额外的},将其更改为:
StringFormat="{}{0:F2}"
(这可能是在从<TextBox Text="{Binding Offset, StringFormat={}{0:F2}}" />之类的文件复制时遗留下来的)

关于c# - 定义stringformat时,TextBox不会更新其视觉效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23914262/

10-11 12:57