Когда я использую UserControl, я передаю данные через DependencyProperties.Мой UserControls не имеет ViewModels.UserControls обрабатывает переданные данные только особым образом.
Но если у меня есть представление, содержащее несколько подвидов, я предпочитаю иметь для каждого подвида собственную модель.Эти модели я буду связывать через свойство ViewModel MainView.
Некоторые примеры:
UserControl1, Код позади:
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; }
}
И использование вview, 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>
Надеюсь, это поможет