3

我有以下代码。

这将显示以下格式的数据 H:M:S。我想编辑这些值......并希望在 viewmodel 中得到通知。

我如何做到这一点?

任何帮助,将不胜感激。谢谢

  <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>
4

1 回答 1

2

StringFormat 绑定是单向的

您需要做的是编写自己的多值转换器,该转换器也实现了 ConvertBack 方法。

一个非常简单的转换器将如下所示。您将需要添加错误检查,并且毫无疑问有更好的转换方式(可能使用正则表达式)。另外,我不确定我的 DateTime 位是否正确,但它为您提供了一个起点。

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 };

   }
 }
于 2011-11-15T20:17:59.270 回答