WPF Listview绑定 - 在代码后面获取绑定项

时间:2016-09-27 18:26:12

标签: c# wpf

我正在尝试从代码隐藏中访问UserControl的绑定对象(从listView itemsource生成)。

我有以下代码:

Exception in thread "main" java.lang.UnsatisfiedLinkError: acm.util.DOSCommandLi
ne.getLine()Ljava/lang/String;
        at acm.util.DOSCommandLine.getLine(Native Method)
        at acm.util.DOSCommandLine.getCommandLine(JTFTools.java:1627)
        at acm.util.JTFTools.getCommandLine(JTFTools.java:439)
        at acm.util.JTFTools.getMainClass(JTFTools.java:464)
        at acm.program.Program.main(Program.java:1320)
<ListView x:Name="lst1">
    <ListView.ItemTemplate>
       <Controls:MyUserControl />  
    </ListView.ItemTemplate>
<ListView>

在每个已创建的用户控件中,我想访问用户控件从其获取值的Customer对象,即:

public void Load()
{
    lst1.ItemsSource = List<Customer> from database ......
}

此代码成功显示Customer对象的属性,我似乎无法在后面的代码中找到它。

请帮忙。

1 个答案:

答案 0 :(得分:2)

编译器是否真的允许您在没有演员的情况下将object分配给Customer

无论如何,DataContext将不会在构造函数中初始化。

你可以处理DataContextChanged事件,只要DataContext发生变化就会引发事件 - 在这种情况下,这可能只是在实例化{{1}的过程中分配的事件。创建DataTemplate。这就是你想要的。

XAML

MyUserControl

C#

<UserControl
    ...
    DataContextChanged="MyUserControl_DataContextChanged"
    ...

或者您可以随时将private Customer _customer; void MyUserControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { _customer = (Customer)DataContext; } 投射到DataContext。当然,请检查Customer。你没有说明你在null做了什么,所以很难确定你何时需要用它做什么。