gpt4 book ai didi

c# - 为什么转换器没有被调用

转载 作者:行者123 更新时间:2023-12-03 10:37:54 25 4
gpt4 key购买 nike

我有转换器将我的集合更改为值列表及其类型。我的转换器接受一个类类型并返回一个 IEnumerable

<ListView ItemsSource="{Binding Model,Converter={StaticResource PropConverter}}"/>

我的部分类(class)代码是
  public partial class MainWindow : Window
{
public Model Model
{
get;
set;
}


public MainWindow()
{
Model=new Model();

InitializeComponent();
}
}

好像我像这样更改我的代码和xaml,它调用convereter
  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;
}
}

现在下面的绑定(bind)将起作用:
<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;
}
}

关于c# - 为什么转换器没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18417478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com