2012-05-01 17 views
5

Estoy intentando averiguar cómo usar UpdateSourceTrigger = Explicit.Un buen ejemplo sobre cómo utilizar UpdateSourceTrigger = Explícito con MVVM

Tengo siguiente forma:

<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> 

qué método debo llamar para actualizar User propiedad?

No deseo abordar los elementos por x: nombre para invocar el enlace. Si tengo que abordar los elementos por x: Nombre, también puedo ir sin vincular por completo, en lo que a mí respecta.

Respuesta

9

Debe llamar al BindingExpression.UpdateSource en el código para actualizar manualmente el enlace. La vinculación explícita no es realmente compatible con MVVM, ya que necesita hacer referencia directamente a los objetos de la vista para realizar la actualización manual.

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

Un poco tarde, pero si sólo maneja un clic de botón en el código subyacente, las cosas están sucediendo y siendo referencia entre sí sólo en la vista, y el modelo de vista sólo recibirá las notificaciones de actualización de las ataduras. – heltonbiker

Cuestiones relacionadas