2012-07-18 28 views
8

He creado un control de usuario, que tiene 2 propiedades de dependencia. Quiero vincular esas propiedades de dependencia a la propiedad mainViewModel, de modo que cada vez que se cambie algo en el control de usuario se actualice la propiedad del padre.WPF enlaza la propiedad de usercontrol a la propiedad principal

Lo intenté, encuadernándolo normalmente pero no funcionó. ¿Cómo puedo vincular el DP del control del usuario a la propiedad del padre?

yo probamos este: UC:

<TextBox Name="TextBox" Text="{Binding ElementName=UCName, Path=DP1, Mode=TwoWay}"/> 

MainWindow:

<UCName:UCName Width="330" CredentialName="{Binding Path=DP1, Mode=TwoWay}"></UCName:UCName> 

Gracias

+0

Podría proporcionar algunos ejemplos de código, incluido cómo se vincula a las propiedades de dependencia. – Nathan

+0

Acaba de editar la publicación original – Ali

Respuesta

18

Para la unión a las propiedades de los padres que debe utilizar RelativeSource en su unión. De esta manera:

<TextBox Name="TextBox" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UCName:UCName}}, Path=DP1, Mode=TwoWay}"/> 

Detalles: https://msdn.microsoft.com/en-us/library/ms743599(v=vs.100).aspx

PD: No se olvide definir UCName espacio de nombres.

[EDITAR] Se modificó la URL de la versión .NET 4 de la documentación.

+0

Su enlace se ha quedado obsoleto. –

5

Algo como esto:

<MainWindow DataContext="mainViewModel"> 

<local:TestControl ucDependProp="{Binding viewModelProp}/> 

</MainWindow> 


className: TestControl.xaml 
<UserControl Name="thisControl"> 
<TextBox Text="{Binding ElementName=thisControl, Path=ucDependProp}/> 
</UserControl> 

El control de usuario no debería estar al tanto del modelo de vista padre.

Cuestiones relacionadas