我有一个有两个属性的视图模型。其中一个是myDataGridSelectedItems,即在datagrid的选择更改事件中更新(我使用MVVM灯将事件转换为命令)。
第二个属性是myText,即视图中有文本框的文本。
在我的视图中我有一个textBox,其文本取决于dataGrid的选择,如果选择是一个项目,那么我将dataGrid列的信息放在textBox中,如果选择是0或大于1 ,然后我清除了textBox。
为此,我使用以下代码:
<TextBox Height="23" HorizontalAlignment="Stretch" Margin="5,26,0,0" Name="mytextBox" VerticalAlignment="Top"
Text="{Binding ElementName=Principal, Path=DataContext.MyDatagridSelectedItems, Converter={StaticResource TextBoxValueConverter}}">
这很好用,因为当我在数据网格中选择一行时,textBox有文本(转换返回的文本),当我选择多一行或取消选择所有行时,它是空的。
但是,通过这种方式myText属性不会更新,因为我没有设置绑定,因为axml中Text属性的绑定使用转换器,而不是视图模型的属性myText。
所以我想知道是否可以在textBox的Text属性中设置两个绑定,或者当TextBox中的文本发生更改时,是否存在以某种方式更新视图模型中的myText属性。
感谢。
答案 0 :(得分:1)
你这样做是错误的: 现在,您在视图中的转换器中编码了视图逻辑。但查看逻辑正是视图模型的用途。
您应该在视图模型中为该文本框的文本提供属性,并仅将该文本框绑定到该属性。
在视图模型中,您可以根据选择更改其值。