如果您希望在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