为什么转换器没有被调用
本文关键字:调用 转换器 为什么 | 更新日期: 2023-09-27 18:28:56
我有一个转换器,可以将我的集合更改为值及其类型的列表。我的转换器接受一个类类型并返回一个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,它就会调用converereter
public MainWindow()
{
DataContext=new Model();
InitializeComponent();
}
<ListView ItemsSource="{Binding Converter={StaticResource PropConverter}}"/>
你能告诉我发生这种事的原因吗。我更喜欢第一种方式,但不知何故,它不调用转换器。
在第一个例子中:
它不起作用,因为您没有分配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模式并分配给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;
}
}