У меня есть UserControl, в котором есть сетка, и я показываю список людей, и когда я нажимаю на строку в моей сетке, я получаю выбранный элемент строки в моем представлении model.my. Проблема в том, что я не могу получить выбранную строку в моем usercontrol в моем view3model SelectedPersonModel. Вот код, который я использую:
Мой код UserControl Xaml и код позади:
<Grid>
<DataGrid ItemsSource="{Binding PersonList,Mode=TwoWay,RelativeSource={RelativeSource AncestorType={x:Type Control:UcPersonList}}}" SelectedItem="{Binding SelectedRow,RelativeSource={RelativeSource AncestorType={x:Type Control:UcPersonList}}}"/>
</Grid>
public partial class UcPersonList : UserControl
{
public UcPersonList()
{
InitializeComponent();
this.DataContext = this;
}
#region PersonListProperty
public static readonly DependencyProperty PersonListProperty =
DependencyProperty.Register("PersonList", typeof(BindingList<PersonModel>), typeof(UcPersonList),
new FrameworkPropertyMetadata
{
DefaultValue = new BindingList<PersonModel>(),
BindsTwoWayByDefault = true
});
public BindingList<PersonModel> PersonList
{
get { return (BindingList<PersonModel>)GetValue(PersonListProperty); }
set
{
SetValue(PersonListProperty, value);
}
}
#endregion
#region SelectedPerson
public static readonly DependencyProperty SelectedRowProperty =
DependencyProperty.Register("SelectedRow", typeof(PersonModel), typeof(UcPersonList),
new FrameworkPropertyMetadata
{
DefaultValue = new PersonModel(),
BindsTwoWayByDefault = true
});
public PersonModel SelectedRow
{
get { return (PersonModel)GetValue(SelectedRowProperty ); }
set
{
SetValue(SelectedRowProperty , value);
}
}
#endregion
}
На мой взгляд, у меня есть:
<my:UcPersonList x:Name="uclist" Grid.Row="2" PersonList="{Binding Path=PersonList,Mode=TwoWay}" SelectedRow="{Binding Path=SelectedPersonModel ,Mode=TwoWay}" />
И моя ViewModel:
public MainViewModel()
{
SelectedPersonModel = new PersonModel();
PersonList = new BindingList<PersonModel>();
PersonList.Add(new PersonModel { FirstName = "A", LastName = "AA", Age = 19 });
PersonList.Add(new PersonModel { FirstName = "B", LastName = "BB", Age = 25 });
PersonList.Add(new PersonModel { FirstName = "C", LastName = "CC", Age = 30 });
}
public BindingList<PersonModel> PersonList { get; set; }
public PersonModel SelectedPersonModel{get;set;}
Я хочу установить User Control PersonList из моей viewmodel и получить selectedRow
Значение свойства в viewmodel SelectedPersonModel property.how это сделать?