2011-11-15 5 views
3

다음 코드가 있습니다.multibinding 및 string.format을 사용하는 WPF 텍스트 상자를 편집하는 방법은 무엇입니까?

다음과 같은 형식으로 데이터를 표시합니다 : 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> 

답변

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

    } 
}