在我的一个数据模型中,我有string
属性绑定到textBox
的文本。当我更改此textBox
的文本时,我想更新另一个ViewModel中的属性。为了实现这一点,我相信我必须在属性的setter下执行操作,但每当我更改textbox
的文本时,被调用的string
属性的唯一区域就是getter。必须有一些我不知道或忽略的东西..
这是我正在使用的字符串属性,以防它有助于查看它:
public string DisplayName
{
get { return _displayName; }
set
{
_displayName = value;
NotifyPropertyChange(() => DisplayName);
//These values are from the other ViewModel
if (MainTreeCollection.SelectedItem != null
&& value != MainTreeCollection.SelectedItem.DisplayName)
MainTreeCollection.SelectedItem.DisplayName = value;
}
}
我注意到在this question中他展示了如何“让[他的] ViewModel知道用户何时更改TextBox
中的文字并将焦点从TextBox
移开”。看起来他已经通过绑定到string
属性来实现这一点,这就是我上面所做的。
怎么没有访问该物业的二传手?如何更改我的方法和代码以执行这些操作?
更新:这是textBox
所要求的xaml:
<TextBox Text="{Binding Model.DisplayName}" Height="23"
HorizontalAlignment="Left" Name="title_TB"
VerticalAlignment="Top" Width="Auto" FontWeight="Bold"
FontSize="14" Margin="5,2,0,0" />
答案 0 :(得分:1)
如果您想在键入时设置有界属性,请将UpdateSourceTrigger设置为 PropertyChanged
。
TextBox的默认值为 LostFocus
,即仅当为TextBox引发LostFocus事件时,有界属性才会更新。
<TextBox Text="{Binding Model.DisplayName,
UpdateSourceTrigger=PropertyChanged}"
Height="23" HorizontalAlignment="Left" Name="title_TB"
VerticalAlignment="Top" Width="Auto" FontWeight="Bold"
FontSize="14" Margin="5,2,0,0"/>