У меня есть пользовательский элемент управления, содержащий список.Я хочу привязать свойство списка к выбранному элементу списка, поэтому я создал свойство зависимости.
public HousePrice SelectedItem
{
get
{
return (HousePrice)GetValue(SelectedItemProperty);
}
set
{
SetValue(SelectedItemProperty, value);
}
}
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register(
"SelectedItem",
typeof(HousePrice),
typeof(HorizontalListBox),
null
);
private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count > 0)
{
SelectedItem = (HousePrice)e.AddedItems[0];
}
}
Я привязываю свойство следующим образом:
<UserControls:HorizontalListBox
DataContext="{Binding HousePrices}"
SelectedItem="{Binding SelectedPriceFrom, Mode=TwoWay}" >
</UserControls:HorizontalListBox>
Свойство модели представления:
private HousePrice _selectedPriceFrom;
public HousePrice SelectedPriceFrom
{
get
{
return _selectedPriceFrom;
}
set
{
_selectedPriceFrom = value;
NotifyOfPropertyChange("SelectedPriceFrom");
}
}
Я вижу установленный dp, но привязка к моему свойству vm, похоже, не работает.
Редактировать:
Я думаю, что проблема связана сDataContext для UserControl устанавливается на HousePrices (одно свойство в моей виртуальной машине), а SelectedItem устанавливается на другое свойство в моей виртуальной машине.Я предполагаю, что он пытается найти SelectedItem относительно HousePrices.
Еще одна странность заключается в том, что я использую платформу Caliburn Micro.
Есть идеи?