2013-05-05 62 views
0

我有一个文本框,我用一个值转换器来设置文本属性,因为这个值取决于一个数据网格的选择。所以我用这个代码:如何在使用数值转换器时更新视图模型的属性?

<TextBox Height="23" HorizontalAlignment="Stretch" Margin="5,26,0,0" Name="myTxt" VerticalAlignment="Top" 
       Text="{Binding ElementName=Principal, Path=DataContext.OneProperty, Converter={StaticResource myConverter}}"> 

Normallt我用这样的方式:

Text="{Binding myProperty}" 

但在这种情况下,我需要一个转换器,但我也想以更新的DataContext属性。

这是可能的,或者如果我使用转换器我无法更新dataContext中的属性?

谢谢。

编辑:

我试图有点清晰。

我有一个文本框的视图。我想根据转换器设置此文本框。该转换器在视图模型中使用一个名为myDataGridSelectedItems的属性。但是我在视图模型myTextBox中有其他属性,当textBox使用它从收敛器收到的值更新它的值时,我想更新它。

所以我想将视图的Text属性绑定到视图模型中的两个属性。

+2

如果这是silverlight,你需要在你的绑定中指定Mode = TwoWay,并确保你的转换器实现了ConvertBack,它应该工作正常 – Charleh 2013-05-05 19:32:54

回答

5

是的,你可以。在你的价值转换器中实现ConvertBack方法,顺便说一句应该实现IValueConverter

此外,请指定NotifyPropertyChanged bindings的属性为on-key-press方法。

而最后一件事,设置绑定模式为TwoWay

+0

但是我怎样才能说视图,我想在视图模型中绑定属性myProperty我使用绑定来执行转换器?我的意思是视图中的文本proerty绑定到convert值,但我想绑定视图模型中的一个属性。 – 2013-05-06 11:50:57

+1

就像我说过的那样,''{Binding Mode = TwoWay}“'会起作用。 – AgentFire 2013-05-06 11:55:39

+1

@ÁlvaroGarcía你认为你绑定了'myConverter <=> TextBlock',但你实际上绑定了'myProperty <= myConverter => TextBlock' – WiiMaxx 2013-05-06 12:04:52

相关问题