2016-07-30 54 views
1

我想從DataTemplate共享ListViewItem到DataTemplate中的UserControl使用DataContext,我只花了兩個小時在這個任務上,看了很多網站,但沒有找到一個請求的答案,因爲每次我想要獲得DataContext,它是空的。UWP DataContext從DataTempalte到DataTemplate中的UserControl

短代碼,我想做的事:

在Page.xaml

<ListView Name="MainWindowLinesInfoListView1" IsItemClickEnabled="True" ItemClick="MainWindowLinesInfoListView1_ItemClick" Grid.Row="1" ItemsSource="{x:Bind pk1}" SelectionMode="Single"> 
     <ListView.ItemTemplate> 
      <DataTemplate x:DataType="data:Przystanki"> 
       <local:MainWindowLinesInfoFirst DataContext="{x:Bind self}" /> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
</ListView> 

在用戶控件調用:MainWindowLinesInfoFirst

<Grid Margin="2" HorizontalAlignment="Center"> 
    <TextBlock x:Name="MainWindowLinesInfoListView1TextBlock" Foreground="Navy" HorizontalAlignment="Center" TextWrapping="Wrap" /> 
</Grid> 

,並在此用戶控件的的.cs:

public MainWindowLinesInfoFirst() 
{ 
    this.InitializeComponent(); 
    var a = this.DataContext as Przystanki; 
} 

,這裏是一個簡單的類:

public class Przystanki 
{ 
    public Przystanki self { get { return this; } } 
    public string name { get; set; } 
} 

的問題是,總是當該用戶控件調用,一個DataContext是不是「Przystanki」 BOT空。

問題是:如何發送一個DataContext到這個UserControl?

回答

2

UWP做些什麼:

  1. 創建MainWindowLinesInfoFirst控制。
  2. 將其DataContext屬性設置爲您所需的值。

顯然,你無法讀取的構造DataContext物業,因爲尚未創建,控制,有沒有辦法讓UWP來創建一個實例之前設置的屬性。

你想要的是在構造函數中訂閱DataContextChanged事件。當UWP設置它時,您會收到通知。

+0

still null .. using this.DataContextChanged + =(sender,e)=> {var a = this.DataContext as Przystanki; };'和'' – Niewidzialny

+0

AH!抓住它!謝謝 !我只是沒有使用參數,我不得不檢查是否空! 'var a = e.NewValue作爲Przystanki;'和'if(a!= null)ChangeText(a);'工作很美好!我的主人; 3 – Niewidzialny

+0

哈,新範圍:D – Niewidzialny

相關問題