2016-07-30 53 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

相关问题