2012-05-01 4 views
5

Я пытаюсь выяснить, как использовать UpdateSourceTrigger = Явно.Хороший пример того, как использовать UpdateSourceTrigger = Явный с MVVM

У меня есть следующий вид:

<StackPanel x:Name="LayoutRoot" Margin="10" DataContext="{Binding ElementName=Window, Mode=OneWay}"> 
    <DockPanel> 
     <TextBlock Text="Proxy address:" VerticalAlignment="Center"/> 
     <TextBox Text="{Binding User.PageAddress, Mode=TwoWay, UpdateSourceTrigger=Explicit}" Margin="28,0,0,0"/> 
    </DockPanel> 
    <DockPanel Margin="0,5,0,0"> 
     <TextBlock Text="User name:" VerticalAlignment="Center"/> 
     <TextBox Text="{Binding User.UserName, Mode=TwoWay, UpdateSourceTrigger=Explicit}" Margin="46,0,0,0"/> 
    </DockPanel> 
    <DockPanel Margin="0,5,0,0"> 
     <TextBlock Text="User password:" VerticalAlignment="Center"/> 
     <TextBox Text="{Binding User.Password, Mode=TwoWay, UpdateSourceTrigger=Explicit}" Margin="26,0,0,0"/> 
    </DockPanel> 
    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,5,0,0"> 
     <Button Content="Ok" IsDefault="True" Width="70" Margin="0,0,15,0" Click="Ok_Click"/> 
     <Button Content="Cancel" IsCancel="True" Width="70"/> 
    </StackPanel> 
</StackPanel> 

какой метод я должен позвонить, чтобы обновить User недвижимость?

Я не хочу обращаться к элементам по x: Name, чтобы вызвать привязку. Если мне нужно адресовать элементы по x: Name, я также могу пойти без привязки, насколько мне известно.

ответ

9

Чтобы обновить привязку вручную, вам необходимо позвонить в BindingExpression.UpdateSource. Явное связывание на самом деле не совместимо с MVVM, поскольку вам нужно напрямую ссылаться на объекты вида для обновления вручную.

// itemNameTextBox is an instance of a TextBox 
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty); 
be.UpdateSource(); 
+0

Немного поздно, но если вы просто обработать нажатие кнопки в код-позади, все еще происходит и ссылки друг на друга только в представлении, и ViewModel будет получать только уведомления об обновлениях от привязок. – heltonbiker

Смежные вопросы