0

我正在学习WPF。

考虑 WPF 应用程序的 XAML 代码:

<Window x:Class="_0SE_BridgingCodeBehind.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:sys="clr-namespace:System;assembly=mscorlib" 
            Title="MainWindow" Height="350"    Width="525" Loaded="Window_Loaded">

   <Window.Resources>
       <col:ArrayList x:Key="MyDataSource">
           <sys:DateTime>1/2/2003 5:00:00</sys:DateTime>
           <sys:DateTime>4/5/2006 13:13:13</sys:DateTime>
           <sys:DateTime>7/8/2009 23:59:59</sys:DateTime>
       </col:ArrayList>
   </Window.Resources>
   <Canvas>
       <ListBox Width="200" Height="100"
             ItemsSource="{StaticResource MyDataSource}">
             <ListBox.ItemTemplate>
                <DataTemplate>
                   <StackPanel Orientation="Horizontal">
                       <Label Content="{Binding DayOfWeek}" 
                          Width="80" Background="Red" />
                       <Label Content="{Binding DayOfYear}" 
                          Width="50" Background="Yellow" />
                       <Label Content="{Binding TimeOfDay}" 
                          Background="LightBlue" />
                   </StackPanel>
                  </DataTemplate>
              </ListBox.ItemTemplate>
       </ListBox>
   </Canvas>
</Window>

在此处输入图像描述

来自 codepoject 文章“ WPF 列表/视图 - 可视化快速入门”(“数据模板”部分),
如何按顺序修改项目代码:

  • 添加到第MyDataSource4 个中的 3 个现有静态值,例如4/4/2013 13:12:13C# 代码 ( MainWindow.xaml.cs) 中的值?
  • 在 C# 代码中获取第二个 DateTime 值(当前4/5/2006 13:13:13MyDataSourceXAML 代码中)?

更新:
遵循Henk Holterman 的回答(稍作改动):

<Canvas>
    <ListBox Width="200" Height="100"
      x:Name="myListBox"
      ItemsSource="{StaticResource MyDataSource}"

我已经从 C# 中渲染了值(从 XAML 中丢失了它们,尽管我不想要它们)或 C# 中的 XAML 值,但不是两者兼而有之。

4

1 回答 1

1

基本思想:

<ListBox Width="200" Height="100" 
      x:Name="myListbox"
      d:ItemsSource="{StaticResource MyDataSource}"   // design-time data
>
   ...
</ListBox>

在 MainForm_Loaded 或构造函数中:

 var data = new ObservableCollection<DateTime> { new DateTime(2013,4,17), ... };
 myListbox.ItemsSource = data;
于 2013-04-17T11:47:32.767 回答