Cuando uso un UserControl paso los datos a través de DependencyProperties. Mi UserControls no tiene ViewModels. UserControls solo maneja los datos pasados de una manera muy especial.
Pero si tengo una Vista que contiene algunas Sub-Vistas, prefiero tener para cada Sub-Vista un modelo propio. Este modelo lo vincularé a través de una propiedad del ViewModel de MainView.
Algunos ejemplos:
UserControl1, Código atrás:
public partial class UserControl1 : UserControl
{
public MyClass MyProperty
{
get { return (MyClass)GetValue(MyPropertyProperty); }
set { SetValue(MyPropertyProperty, value); }
}
public static readonly DependencyProperty MyPropertyProperty =
DependencyProperty.Register("MyProperty", typeof(MyClass), typeof(UserControl1), new UIPropertyMetadata(null));
public UserControl1()
{
InitializeComponent();
}
}
public class MyClass
{
public int MyProperty { get; set; }
}
Y el uso de la vista, XAML:
<Window x:Class="Sandbox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Sandbox="clr-namespace:Sandbox">
<Grid>
<Sandbox:UserControl1 MyProperty="{Binding MyOtherPropertyOfTypeMyClassInMyViewModel, Mode=TwoWay}" />
</Grid>
espero que esto ayude
hola Nunca he usado DependencyProperties. ¿Puede darme un enlace o explicar brevemente cómo un usuario debe usar una Propiedad de dependencia? ¿Debo hacer un tipo para un userControl y luego vincularlo a las diversas propiedades dentro de la vista? – ganeshran
Agregué un simple ejemplo – WaltiD
Gracias WaltiD intentaré este enfoque. ¿Puedo vincularlo también a un tipo definido por el usuario? – ganeshran