WPF PopupBox怎么接收DataTemplate的值

现在要实现一个循环加载的时间日期下拉框 ,DataTemplate中每一列一个PopupBox,请问PopupBox怎么绑定DataTemplate中的对应行的字段

下面能取到值,上面取不到值了

 

 

WPF PopupBox 本身并不会直接接收 DataTemplate 的值,但是可以通过绑定的方式将 DataTemplate 中的值传递给 PopupBox 中的控件。

具体步骤如下:

  1. 在 PopupBox 中定义需要绑定的控件,例如 TextBlock。

  2. 在 DataTemplate 中定义需要传递的值,例如绑定到 TextBlock 的 Text 属性。

  3. 在 PopupBox 的 DataContext 中设置需要传递的数据。

  4. 在 TextBlock 的 Text 属性中使用绑定表达式,将 DataTemplate 中的值绑定到 TextBlock 中。

例如,假设我们需要在 PopupBox 中显示一个名字和一个年龄,可以按照以下步骤操作:

  1. 在 PopupBox 中定义两个 TextBlock,分别用于显示名字和年龄。
<PopupBox>
    <StackPanel>
        <TextBlock Name="NameText" />
        <TextBlock Name="AgeText" />
    </StackPanel>
</PopupBox>
  1. 在 DataTemplate 中定义需要传递的值,例如绑定到 TextBlock 的 Text 属性。
<DataTemplate x:Key="PersonTemplate">
    <StackPanel>
        <TextBlock Text="{Binding Name}" />
        <TextBlock Text="{Binding Age}" />
    </StackPanel>
</DataTemplate>
  1. 在 PopupBox 的 DataContext 中设置需要传递的数据。
PopupBox.DataContext = new Person { Name = "John", Age = 30 };
  1. 在 TextBlock 的 Text 属性中使用绑定表达式,将 DataTemplate 中的值绑定到 TextBlock 中。
<PopupBox>
    <StackPanel>
        <TextBlock Name="NameText" Text="{Binding Name}" />
        <TextBlock Name="AgeText" Text="{Binding Age}" />
    </StackPanel>
</PopupBox>

这样就可以将 DataTemplate 中的值传递到 PopupBox 中的控件中显示了。