簡體   English   中英

WPF Listview綁定-在后面的代碼中獲取綁定項

[英]WPF Listview binding - Get bound item in code behind

我試圖從代碼隱藏訪問UserControl的綁定對象(從listView itemsource生成)。

我有以下代碼:

<ListView x:Name="lst1">
    <ListView.ItemTemplate>
       <Controls:MyUserControl />  
    </ListView.ItemTemplate>
<ListView>

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

在每個生成的用戶控件中,我要訪問該用戶控件從中獲取其值的Customer對象,即:

public MyUserControl()
{
    InitializeComponent();

    Customer cust = (Customer)this.DataContext;
    // cust is null????
}

該代碼成功顯示了Customer對象的屬性,但似乎在后面的代碼中找不到它。

請幫忙。

編譯器是否真的允許您將object分配給Customer而無需強制轉換?

無論如何, DataContext尚未在構造函數中初始化。

您可以處理DataContextChanged事件,該事件將在DataContext更改時引發-在這種情況下,可能只是在實例化創建MyUserControlDataTemplate的過程中分配該事件時。 這就是您想要的。

XAML

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

C#

private Customer _customer;
void MyUserControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    _customer = (Customer)DataContext;
}

或者,您可以在需要使用DataContext將其轉換為Customer 當然,請檢查是否為null 您沒有說要與Customer做什么,因此很難確定何時需要使用客戶做些什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM