0

我有一个具有两个属性的视图模型。其中之一是 myDataGridSelectedItems,即数据网格的选择更改事件中的更新(我正在使用 MVVM light 将事件转换为命令)。

第二个属性是 myText,即视图中具有文本框的文本。

在我看来,我有一个文本框,其文本取决于数据网格的选择,如果选择是一项,那么我将数据网格的一列信息放在文本框中,如果选择是 0 或大于 1,那么我清除文本框。

为此,我使用以下代码:

<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 属性。

谢谢。

4

1 回答 1

1

您这样做是错误的:现在,您在视图的转换器中编码了视图逻辑。但是视图逻辑正是视图模型的用途。

您应该在视图模型中拥有该文本框的文本属性,并将文本框仅绑定到该属性。
在视图模型中,您根据选择更改其值。

于 2013-05-06T14:07:16.397 回答