2009-12-23 55 views
0

我是WPF的新手,我试图创建一个WPF控件,以特定的方式显示一个字符串(它总是一个数字)。控件上会有三个不同的文本字段,并且字符串需要按照以下规则分成三个不同的组件:WPF控件和解析/绑定到给定的字符串

假设您有字符串“1.5678”。控制需要显示该字符串如下,在三个文本字段:
textField1的=“1.5”
文本字段2 =“67”
文本字段3 =“8”

规则是文本字段3将总是包含最后一个字符,textField2将包含最后一个字符之前的两个字符,而textField1将包含其余字符。这里有一些例子:

“145.670”
textField1 =“145.”
文本字段2 = “67”
文本字段3 = “0”

“15.839”
textField1的= “15”
文本字段2 = “83”
文本字段3 = “9”

假定字符串将总是包含至少4个字符。

现在,有没有一种方法可以使用新的WPF绑定功能为我自动执行此操作?我可以将WPF控件绑定到包含字符串的某个属性,并让文本框按照我所描述的那样显示它?

感谢

回答

0

你可以通过绑定(到一个单一的财产),通过使用IValueConverter为您结合做到这一点。 IValueConverter的文档给出了一个示例实现。

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

请注意,您可以通过使用三个独立的转换器类或具有指定要显示哪个部分的枚举的一个类(仍然需要三个唯一实例)来完成此操作。

+0

使用值转换器不会允许您使用双向绑定,因为无法仅基于已更改的部分来确定整个值。 – 2009-12-24 11:44:48

+0

不,但他特别只提到了字符串的DISPLAY - 他没有指定他需要编辑字符串。 – 2009-12-24 16:52:32

0

是的,那应该是可以的。

  1. 创建一个用户控件。

  2. 建立在你的控制依赖属性(Text/TextProperty),将包含字符串(以后可以进行数据绑定到这个属性时使用你的控制)。

  3. 创建一个converter,将完整的字符串转换为必需的部分(基于转换器的某些属性,例如PartNumber)。

  4. 在您的控件的XAML中,使用不同的零件编号创建您的转换器的三个实例作为静态资源。

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

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