根据样式设置文本框文本格式


  1. 我有一个主窗口.XAML
  2. TextBox已添加到其中
  3. TextBox文本绑定已完成
  4. 当我在绑定中(在MainWindow.XAML中)添加StringFormat时,它就起作用了
  5. 当我在Style中添加StringFormat时,它不起作用

下面是来自style和MainWindow.xaml 的代码

<TextBox Grid.Row="1" Grid.Column="4"   Style="{StaticResource TextBoxStyle}" Text="{Binding CustomerAmount,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" HorizontalAlignment="Stretch" Margin="10,0,0,0"/>

<Style  x:Key="TextBoxStyle"   TargetType="{x:Type TextBox}" >
        <Setter Property="Text" Value="{Binding Text, RelativeSource={RelativeSource Self},StringFormat='#,###,###,##0.00;(#,###,###,##0.00)'}"></Setter>
    </Style>

现在基本上已经应用了两个Text绑定,一个在MainWindow中,一个是在Style中。

控件的MainWindow.xaml中设置的Text属性优先于您在Style中设置的属性,因此您通过Style设置的StringFormat实际上从未应用,因为整个Style.Setter都被忽略了。

一个非常粗略的方法来实现这一点并证明上面的声明是尝试将您的xaml切换到以下

<TextBox Grid.Row="1" Grid.Column="4"   Style="{StaticResource TextBoxStyle}" Tag="{Binding CustomerAmount,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" HorizontalAlignment="Stretch" Margin="10,0,0,0"/>

和样式:

<Style x:Key="TextBoxStyle"
        TargetType="{x:Type TextBox}">
  <Setter Property="Text"
          Value="{Binding Tag,
                          RelativeSource={RelativeSource Self},
                          StringFormat='#,###,###,##0.00;(#,###,###,##0.00)',
                          Mode=TwoWay,
                          UpdateSourceTrigger=PropertyChanged}" />
</Style>

这将起作用,因为您现在在MainWindow中有Tag绑定,在Style中有Text绑定。您可以切换到自定义的Attached属性或DP以获得相同的行为

相关内容

  • 没有找到相关文章

最新更新