我想使用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不是“ Przystanki” bot无效。

问题是:如何将DataContext发送到此UserControl?

最佳答案

UWP的作用:


创建MainWindowLinesInfoFirst控件。
将其DataContext属性设置为所需的值。


显然,您无法在构造函数中读取DataContext属性,因为尚未创建控件,并且UWP无法在创建实例之前设置属性。

您想要的是在构造函数中订阅DataContextChanged事件。当UWP对其进行设置时,系统会通知您。

关于c# - UWP DataContext从DataTemplate到DataTemplate中的用户控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38677948/

10-17 02:09