Я пытаюсь привязать параметр моего настраиваемого элемента управления к списку. Однако он ищет неправильную ViewModel. Он выполняет поиск в режиме ViewModel моего элемента управления (ViewModelUserControlVM), а не в ViewModel страницы, на которой находится мой элемент управления.Проблема с привязкой к пользовательскому контролю (Windows universal 10)
управления пользователя XAML
<UserControl.DataContext>
<vm:ViewModelUserControlVM/>
</UserControl.DataContext>
<ListView Name="lst">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
контроль код пользователя за
public object ItemsSource
{
get
{
return (object)GetValue(ItemsSourceProperty);
}
set
{
SetValue(ItemsSourceProperty, value);
}
}
public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register
(
"ItemsSource",
typeof(object),
typeof(FlipListview),
new PropertyMetadata(
new object(),
new PropertyChangedCallback(OnItemsSourceChanged)
)
);
Главная XAML
<local:CustomControl ItemsSource="{Binding list, Mode=TwoWay}">
редактировать
MainPage.xaml
<Page.DataContext>
<vm:MainPageVM/>
</Page.DataContext>
MainPageVM
public class MainPageVM : ViewModelBase
{
public List<Model> list { get; set; }
public RelayCommand SelectedItemCommand { get; set; }
public Model SelectedItem { get; set; }
public MainPageVM()
{
SelectedItem = new Model();
SelectedItemCommand = new RelayCommand(SelectedItem);
list = new List<Model>();
for (int i = 0; i < 5; i++)
{
list.Add(new Model("url" + i, "title" + i, "desc" + i));
}
RaisePropertyChanged(() => list);
}
}
контрольный код пользователя за
public CustomControl()
{
this.InitializeComponent();
}
заранее спасибо.
Я отредактировал мое сообщение, чтобы добавить больше кода. – denderp
это близко, но теперь моя привязка в моем CustomControl не работает. это привязка к элементу управления в стиле, который я применяю к Listview. – denderp
Я пытаюсь работать. в загруженном событии я делаю это. Стиль templatedControl = ((CustomControl) отправитель) .lst.Style; SetterBaseCollection set = templatedControl.Setters; Список