c# - UWP DataContext 从 DataTempalte 到 DataTemplate 中的 UserControl

标签 c# xaml user-controls uwp

我想使用 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”机器人 null。

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

最佳答案

UWP 的作用:

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

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

您想要的是在构造函数中订阅 DataContextChanged 事件。当 UWP 设置时,您会收到通知。

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

相关文章:

c# - 用于检查给定密码是否至少包含一个数字和一个字母的正则表达式?

c# - 如何在 XAML 中围绕控件的中心进行旋转

c# - "Two-dimensional"用户控件

c# - 从用户控件调用父页面上的方法

C# UserControl - 在运行时添加它们

c# - 如何在C#中缓存具有多个键的对象

c# - 使用 SetupDiGetDriverInfoDetail 调用 PInvoke

c# - 更快的 MD5 替代品?

c# - EventTrigger 绑定(bind)到来自 DataContext 的事件

silverlight - 如何在 XAML 中使用 Segoe UI 符号