我想使用DataContext从DataTemplate共享一个ListViewItem到DataTemplate中的UserControl,我只花了两个小时完成这个任务,看了很多网站,但没有找到请求的答案,因为每次我想获得DataContext,它都是null
简短的代码,我想做的事情:
在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>
在UserControl中的调用:MainWindowLinesInfoFirst
<Grid Margin="2" HorizontalAlignment="Center">
<TextBlock x:Name="MainWindowLinesInfoListView1TextBlock" Foreground="Navy" HorizontalAlignment="Center" TextWrapping="Wrap" />
</Grid>
以及此UserControl的.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; }
}
问题是,总是在调用此UserControl时,DataContext不是&#34; Przystanki&#34; bot null。
问题是:如何将DataContext发送到此UserControl?
答案 0 :(得分:3)
UWP的作用:
MainWindowLinesInfoFirst
控件。DataContext
属性设置为您需要的值。显然,您无法在构造函数中读取DataContext
属性,因为尚未创建控件,并且在创建实例之前UWP无法设置属性。
您想要的是订阅构造函数中的DataContextChanged
事件。当UWP设置它时,您将收到通知。