Silverlight 银光装订问题

Silverlight 银光装订问题,silverlight,data-binding,Silverlight,Data Binding,大家好 我第一次用Silverlight试用我的手,我有一个关于绑定的问题。我有一个绑定到自定义数据对象的表单。我有两个盒子贴上了这样的标签: 驾驶经验[文本框]年[文本框]月 我需要将它绑定到DrivingExperienceMonths的单个整数属性。例如,如果DrivingExperienceMonths等于29,我会在years文本框中看到2,在months文本框中看到5 当然,我可以为文本框的文本更改事件添加一个侦听器,并以这种方式进行处理,但是表单上的所有其他内容都使用双向绑定,我也

大家好

我第一次用Silverlight试用我的手,我有一个关于绑定的问题。我有一个绑定到自定义数据对象的表单。我有两个盒子贴上了这样的标签:

驾驶经验[文本框]年[文本框]月

我需要将它绑定到DrivingExperienceMonths的单个整数属性。例如,如果DrivingExperienceMonths等于29,我会在years文本框中看到2,在months文本框中看到5

当然,我可以为文本框的文本更改事件添加一个侦听器,并以这种方式进行处理,但是表单上的所有其他内容都使用双向绑定,我也希望这样做


提前感谢

我将创建一个值转换器(从IValueConverter派生的类),用于将整数转换为完整字符串。然后,您将在绑定中设置ValueConverter的实例。

您可能可以创建一个从该属性中提取相应信息的实例(通过
ConverterParameter
指定)

编辑:正如我刚才注意到的(以及科佩在回答中提到的),如果您需要双向绑定,这是行不通的。最好在两个单独的属性中进行转换

大概是这样的:

public int DrivingExperienceMonths { get; set; }

public int ExpMonths
{
    get { return DrivingExperienceMonths % 12; }
    set { DrivingExperienceMonths = (ExpYears * 12) + value; }
}

public int ExpYears
{
    get { return DrivingExperienceMonths / 12; }
    set { DrivingExperienceMonths = (value * 12) + ExpMonths; }
}

您可以在WPF中实现
IMultiValueConverter
,但遗憾的是,Silverlight不支持这一点

最好的选择通常是让ViewModel处理此问题。它可以创建一个“月”和一个“年”属性,自动与您的驾驶体验月值同步


如果只想使用单向绑定(仅用于显示),可以使用两个
IValueConverter
s。对于双向数据绑定,它必须在代码中处理。

这只适用于单向绑定,因为有两个不同的值。这是不可能做到的…一个旁注,一些第三方工具,如devexpress,确实支持多绑定。这里还有一个博客,您可以下载允许您进行多重绑定的扩展。