【发布时间】:2020-04-13 07:40:10
【问题描述】:
我有以下具体的课程和干扰,
public interface IMyViewModel
{
ObservableCollection<Person> People { get; set; }
}
public class MyViewModel : INotifyPropertyChanged, IMyViewModel
{
private ObservableCollection<Person> _people;
public ObservableCollection<Person> People
{
get => _people;
set
{
if (value == _people)
return;
_people = value;
OnPropertyChanged();
}
}
public MyViewModel()
{
_people = new ObservableCollection<Person>
{
new Person() {Id = 1, Name = "Bob", Age = 45},
};
}
}
并为 DI 使用 autofac,
builder.RegisterType<MyViewModel>().As<IMyViewModel>();
现在在我的 xaml 文件中,我正在尝试绑定一个列表视图,
<ListView ItemsSource="{Binding People, Mode=OneWay}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" Width="100"/>
<GridViewColumn Header="Age">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Age}" Width="100"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
在后面的xaml代码中我想使用接口而不是具体的视图模型类,如何使用?
如果我使用DataContext = _viewModel;,那么它不起作用,并且没有记录绑定到列表视图。
public partial class NetworkConfiguration : Window
{
private IMyViewModel _viewModel;
public NetworkConfiguration()
{
InitializeComponent();
//DataContext = new MyViewModel();
DataContext = _viewModel;
}
public IMyViewModel ViewModel
{
get
{
return _viewModel;
}
set
{
DataContext = value;
_viewModel = value;
}
}
}
注意 - 如果我使用的是 DataContext = new MyViewModel();,那么它可以工作。用户界面如何?
谢谢!
【问题讨论】:
-
DataContext = _viewModel;等价于DataContext = null;。目前尚不清楚您为什么会期待其他任何东西。 -
那应该怎么做呢?请建议
标签: c# wpf datacontext