UIの変更をViewModelに反映させたい場合は、2つのバインディングが必要です。私はコントロールが何をしているのかわかりませんが、私はTextBoxでそれを表示します。
<TextBox Text="{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged }" />
Mode=TwoWay
はバックのViewModelにUIで行った変更をトリガするために、このテキストボックスを有効にします。 TwoWayモードはTextBoxのデフォルトですが、デフォルトでコントロールで有効になっているかどうかはわかりません。
ValueConverterを使用する場合は、ConvertBackを実装する必要があります。既に説明したようなものです。もう一度、あなたのコードがどのように見えるか分かりませんが、このようなものはうまくいくでしょう。
public class IndexToNumberConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int index = Convert.ToInt32(value);
switch(index)
{
case 0:
return "ZERO";
case 10:
return "TEN";
default:
return "OTHER";
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string val = value.ToString();
switch(val)
{
case "ZERO":
return 0;
case "TEN":
return 10;
default:
return -1;
}
}
}
次に、バウンドコントロールは次のようになります。
<TextBox Text="{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource IndexToNumberConverter} }" />
あなただけあなたがMode=OneWayToSource
を指定する必要がUIからのViewModelにあることを結合したい場合。
私はこれが役立つことを願っています。そうでなければ、関連性の高いコードで質問を更新することをお勧めします。
データがビューモデルからビューに流れるときに変換が実行されます。 ConvertBackは、データがビューからモデルに流れるときに実行されます。双方向バインディングをサポートしたい場合は、両方を実装する必要があります。 ConvertBackメソッドは、ビューのデータをビューモデルの適切なデータに変換する必要があります。保存しないと、そのデータは保存されません。あなたがどちらかを示していないので、私はあなたの問題が何であるかについては言えません。 – Will