(Wpf,.Net4)
嘿,当我使用带有 DataType(并且没有键)的数据模板时,它仅适用于构造函数。(我必须那样使用它,因为我有两种不同的类型)。问题是,它可以在 .net 3.5 上运行,现在我需要升级到 .net 4。(我玩过项目的属性,发现它可以在 3.5 上运行)这是整个代码(除了默认的 App .xaml):
MainWindow.xaml:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1" x:Name="me"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition />
</Grid.RowDefinitions>
<ToolBar ItemsSource="{Binding ElementName=me, Path=Items}">
<ToolBar.Resources>
<DataTemplate DataType="{x:Type local:Class1}">
<TextBlock Text="{Binding Title}" />
</DataTemplate>
</ToolBar.Resources>
</ToolBar>
<StackPanel Grid.Row="1">
<Button Content="1" Click="Button_Click"/>
</StackPanel>
</Grid>
</Window>
主窗口.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
Items = new ObservableCollection<Class1>();
Items.Add(new Class1() { Title = "1" });
InitializeComponent();
}
public ObservableCollection<Class1> Items { get; set; }
private void Button_Click(object sender, RoutedEventArgs e)
{
Items.Add(new Class1() { Title = (Items.Count + 1).ToString() });
}
}
public class Class1
{
public string Title { get; set; }
}
}
按钮动态添加项目,我们可以看到第一个显示它的标题,并且动态添加的项目没有应用模板。我能做些什么?谢谢。