如何编辑使用多重绑定和string.format的WPF文本框?
我有以下代码 这将以以下格式显示数据H:M:S。我希望编辑这些值…并希望在viewmodel中收到通知 我如何做到这一点 任何帮助都将不胜感激。谢谢如何编辑使用多重绑定和string.format的WPF文本框?,wpf,mvvm,multibinding,string-formatting,Wpf,Mvvm,Multibinding,String Formatting,我有以下代码 这将以以下格式显示数据H:M:S。我希望编辑这些值…并希望在viewmodel中收到通知 我如何做到这一点 任何帮助都将不胜感激。谢谢 <TextBox DataContext="{Binding UpdateSourceTrigger=PropertyChanged}" > <TextBox.Text> <MultiBindi
<TextBox DataContext="{Binding UpdateSourceTrigger=PropertyChanged}" >
<TextBox.Text>
<MultiBinding StringFormat=" {0}:{1}:{2}">
<Binding Path="ValueH" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" />
<Binding Path="ValueM" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" />
<Binding Path="ValueS" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" />
</MultiBinding>
</TextBox.Text>
</TextBox>
StringFormat绑定是单向的 您需要做的是编写自己的多值转换器,该转换器也实现ConvertBack方法 一个非常简单的转换器如下所示。您将需要添加错误检查,毫无疑问,有更好的方法可以转换回来(可能是使用正则表达式)。另外,我不确定我的日期时间是否正确,但它给了你一个起点
public class TimeConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
return string.Format("{0}:{1}:{2}",values[0],values[1],values[2]); }
public object[] ConvertBack(object value, Type[] targetTypes, object parameter,
System.Globalization.CultureInfo culture)
{
var date=DateTime.Parse((string)value);
return new object[] { date.Hours,date.Minutes,date.Seconds };
}
}