2010-12-08 6 views
0

データベースに、合計月数の値があります。私のWPF UIでは、この値を年数および月数として表示および更新する必要があります。私は2つの別々のテキストボックス(年と月)を使用して合計月のこの1つの値を表示して更新できるようにバインディングをこのコントロールで使用するように苦労していますWPFユーザーコントロールで1ヶ月間の月と年を表示する

誰でも助けてもらえますか?

+0

あなたは2つの方法バインディングが必要ですか? –

答えて

0

バインディングのソースであるクラス(ViewModelなど)では、必要に応じて2つの値を計算する2つのプロパティを追加できます。たとえば:あなたはこれらの値は自動的に更新されるようにしたい場合は、このクラスがINotifyPropertyChangedインタフェースを実装し、_timeInMonths変更のたび値の両方の性質のためにPropertyChangedイベントを発生させる

private const int MonthsInAYear = 12; // pedagogic purposes only :) 

// This field contains the updated database value 
private int _timeInMonths; 

public int TimeYears 
{ 
    get { return _timeInMonths/MonthsInAYear; } 
} 
public int TimeMonths 
{ 
    get { return _timeInMonths % MonthsInAYear; } 
} 

します。

0

私はあなたがあなたのviewmodel自体

サンプル

public class MonthConverter : IValueConverter 
{ 
    #region IValueConverter Members 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if(((string)parameter)=="Year") 
     { 
      return (int)value/12; 
     } 
     if (((string)parameter) == "Month") 
     { 
      return (int)value % 12; 
     } 
     return null; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

とあなたのXAMLでそれを行うことができ、対応する年と月values.Orにあなたの月の値を変換するコンバータを使用する必要があります推測

<StackPanel Orientation="Horizontal"> 
     <TextBlock Height="23" Text="{Binding TotalMonths,Converter={StaticResource MonthConverter},ConverterParameter='Year',StringFormat={}{0}Years}"/> 
     <TextBlock Height="23" Text="{Binding TotalMonths,Converter={StaticResource MonthConverter},ConverterParameter='Month',StringFormat={}{0}Months}"/> 
    </StackPanel> 
関連する問題