如果您希望在UI上進行更改以反映您的ViewModel,則需要雙向綁定。我不知道你的控制是幹什麼的,但我會用TextBox來顯示它。
<TextBox Text="{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged }" />
Mode=TwoWay
使此文本框可以觸發在UI上進行的更改返回到ViewModel。 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} }" />
如果你希望你的綁定是從UI到視圖模型只需要指定Mode=OneWayToSource
。
我希望這可以幫助,否則我建議你用更相關的代碼更新你的問題。
當數據從視圖模型流向視圖時轉換運行。 ConvertBack在數據從視圖流向模型時運行。如果你想支持雙向綁定,你必須實現兩者。您的ConvertBack方法必須將視圖中的數據轉換爲視圖模型的相應數據,否則將不會保存。由於你還沒有顯示,我不能說你的問題可能是什麼。 – Will