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 に答える