我有转换器将我的集合更改为值列表及其类型。我的转换器接受类类型并返回IEnumerable
<ListView ItemsSource="{Binding Model,Converter={StaticResource PropConverter}}"/>
我的部分班级代码是
public partial class MainWindow : Window
{
public Model Model
{
get;
set;
}
public MainWindow()
{
Model=new Model();
InitializeComponent();
}
}
就好像我改变了我的代码和xaml一样,它调用了更为严肃的
public MainWindow()
{
DataContext=new Model();
InitializeComponent();
}
<ListView ItemsSource="{Binding Converter={StaticResource PropConverter}}"/>
你能否告诉我发生这种情况的原因。我更喜欢第一种方式,但不知怎的,它不会调用转换器。
答案 0 :(得分:1)
在第一个例子中:
它不起作用,因为你没有分配DataContext,所以它等于null。
您可以通过分配DataContext值来修复它:
public partial class MainWindow : Window
{
public Model Model
{
get;
set;
}
public MainWindow()
{
Model=new Model();
InitializeComponent();
this.DataContext = this;
}
}
现在,下面的绑定将起作用:
<ListView ItemsSource="{Binding Model,Converter={StaticResource PropConverter}}"/>
更好的选择是学习MVVM pattern并分配给DataContext ViewModel
:
public class MainViewModel
{
public MainViewModel()
{
Model = new Model();
}
public Model Model
{
get;
set;
}
}
查看:
public partial class MainWindow : Window
{
MainViewModel _vm;
public MainWindow()
{
InitializeComponent();
_vm = new MainViewModel();
this.DataContext = _vm;
}
}