【发布时间】:2016-03-23 15:01:17
【问题描述】:
我正在尝试将自定义控件的参数绑定到列表。但是它在错误的 ViewModel 中搜索。它在我的控件 (ViewModelUserControlVM) 的 ViewModel 中搜索,而不是在我的控件所在页面的 ViewModel 中搜索。
用户控件 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();
}
提前致谢。
【问题讨论】:
标签: c# wpf mvvm binding win-universal-app