私は文字列と私たちのtimeformatの間の変換に使用しているコンバータに問題があります。コンバータ自体は正常に動作し、このようにimplemenetedさ:双方向バインディングで現在のDataContextでIValueConverterを使用しています
[ValueConversion(typeof(string), typeof(SimpleTime))]
public class StringToSimpleTimeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// convert from string to SimpleTime and return it
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// convert value from SimpleTime to string and return it
}
}
コンバータを使用してXAMLは、このようなusercontrol.resourcesでコンバータ自体含まれていますプロパティが発生した場合
<converter:StringToSimpleTimeConverter x:Key="stringToSimpleTimeConverter"/>
を(I
<DataTemplate x:Key="SimpleTimeEditingTemplate">
<TextBox Text="{Binding, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>
</DataTemplate>
iが遭遇だ問題がCONことである:「simpletimeを編集するためのDataTemplateが使用されている)、バックグラウンドでWPFツールキットからのデータグリッドを用いたMそれが2ウェイコンバータであればバインダで指定されたパスを持つ必要がありますが(両方向で必要です)、設定したいプロパティはすでに現在のDataContextです。
私が考えることができる唯一の回避策は、現在のSimpleTimeを取得または設定するSimpleTimeにダミープロパティを導入することです。正常に動作しますが、私はより多くの時間のためのコンバータを必要とする場合は特に、本当に適切な解決策ではありません
<TextBox Text="{Binding Clone, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>
経由
public class SimpleTime
{
...
public SimpleTime Clone
{
get { return new SimpleTime(_amount, _format); }
set { this._amount = value._amount; this._format = value._format; }
}
}
、その一つに結合し...
任意の助けていますお礼 歓声、マンニー
私はテキストボックスの親usercontrolとdatacontextへのバインディングを使用して同様のアプローチを試みました。 IValueConverterは、文字列をsimpletimeに変換するために正しく呼び出され、文字列をコントロールに表示するために戻されますが、データ構造内のsimpletimeプロパティのセットは決して呼び出されません。 – manni
@manni:これでテストアプリを作ったんだけど、うまく動いているようだ。それ自身のDataContextにバインドするので、それが機能しない理由はありません。 ConvertBackメソッドが呼び出されないことは確かですか? –
努力をいただきありがとうございます。私は私が言っていることを意味するものは十分ではないと思う:私は私のconvertbackとconvertメソッドは、私はGUIの値を変更する場合、それは正常に動作しています呼び出されます。私が設定しているプロパティ(simpletimeプロパティ)のプロパティセッターは呼び出されません(ブレークポイントはトリガーされません)。私はそれを今見てみましょう、あなたの助けをありがとう、私は本当に感謝します。 – manni