C# WPF控件和对给定字符串的解析/绑定

C# WPF控件和对给定字符串的解析/绑定,c#,wpf,data-binding,C#,Wpf,Data Binding,我是WPF新手,正在尝试创建一个WPF控件,该控件以特定方式显示字符串(始终是数字)。控件上将有三个不同的文本字段,字符串需要按照以下规则拆分为三个不同的组件: 假设您有字符串“1.5678”。控件需要在三个文本字段中显示如下字符串: textField1=“1.5” textField2=“67” textField3=“8” 规则是textField3将始终包含最后一个字符,textField2将包含最后一个字符之前的两个字符,textField1将包含其余字符。以下是更多的例子: “145

我是WPF新手,正在尝试创建一个WPF控件,该控件以特定方式显示字符串(始终是数字)。控件上将有三个不同的文本字段,字符串需要按照以下规则拆分为三个不同的组件:

假设您有字符串“1.5678”。控件需要在三个文本字段中显示如下字符串:
textField1=“1.5”
textField2=“67”
textField3=“8”

规则是textField3将始终包含最后一个字符,textField2将包含最后一个字符之前的两个字符,textField1将包含其余字符。以下是更多的例子:

“145.670”
textField1=“145。”
textField2=“67”
textField3=“0”

“15.839”
textField1=“15。”
textField2=“83”
textField3=“9”

假设字符串始终包含至少4个字符

现在,有没有一种方法可以让我使用新的WPF绑定特性自动完成这项工作?我是否可以将WPF控件绑定到包含字符串的某个属性,并让文本框如我所述显示它


谢谢,您可以通过绑定(到单个属性)来实现这一点,方法是使用用于绑定的。IValueConverter的文档提供了一个示例实现

每个控件都可以有一个转换器,指定要显示的部分,然后文本框绑定将为您执行转换


请注意,您可以使用三个单独的转换器类,或者使用一个带有枚举的类来指定要显示的部分(仍然需要三个唯一实例)。

是的,这应该是可能的

  • 创建一个用户控件

  • 在控件中创建将包含字符串的依赖项属性(
    Text
    /
    TextProperty
    )(以后使用控件时可以将数据绑定到此属性)

  • 创建一个将完整字符串转换为所需部分(基于转换器的某些属性,例如,
    PartNumber

  • 在控件的XAML中,创建三个具有不同零件号的转换器实例作为静态资源

  • 然后使用绑定(
    {binding ElementName=myControl,Path=Text,Converter={StaticResource FirstPartConverter}}
    ),使用正确的转换器将控件中的文本字段绑定到依赖项属性


  • 如果有任何步骤不清楚,请随时在评论中询问。

    使用值转换器不允许使用双向绑定,因为不可能仅根据更改的一部分来确定整个值。没有,但他特别提到了字符串的显示-他没有指定需要编辑字符串。