2011-11-15 15 views
3

私は以下のコードを持っています。マルチバインディングとstring.formatを使用するWPFテキストボックスの編集方法は?

これは、H:M:Sの形式でデータを表示します。これらの値を編集したいと思います...そして、ビューモデルで通知されたかったのです。

どのように達成できますか?

ご協力いただければ幸いです。結合のおかげ

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

答えて

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

    } 
} 
関連する問題