我正在尝试从代码隐藏中访问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对象的属性,我似乎无法在后面的代码中找到它。
请帮忙。
答案 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
做了什么,所以很难确定你何时需要用它做什么。