尝试进行以下操作:
在我的XAML中我有
<ItemsControl x:Name="IC_Contacts" BorderThickness="0" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="20" />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<Expander Grid.Column="0">
</Expander>
<Button Grid.Column="1" Height="10" Width="20" Content="Edit"/>
<Button Grid.Column="2" Height="10" Width="20" Content="Delete"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
在代码背后
public void SetBinding()
{
contactsExp = new List<Expander>();
foreach (var contact in contacts)
{
Expander exp = new Expander();
exp.Template = (ControlTemplate)Application.Current.FindResource("ContactExpander");
if (!String.IsNullOrEmpty(contact.ImageName))
exp.SetValue(ExpanderImage.ExpImgProperty, "/Images/" + contact.ImageName);
else
exp.SetValue(ExpanderImage.ExpImgProperty, "/Images/default.jpg");
exp.Header = contact.Name;
exp.Content = string.Format("Mobile: {0}\nPhone: {1}\nAdress: {2}\nDate of Birth: {3}",
contact.Mobile, contact.Phone, contact.Address, contact.DateOfBirth.ToString("dd.mm.yyyy"));
contactsExp.Add(exp);
}
IC_Contacts.ItemsSource = contactsExp;
}
我想做一些接近联系人的书,所以我的扩展器有 自定义模板和每个扩展器对象是一个联系人。但 我需要为每个扩展器添加按钮Delete和Edit。 如果我在模板中添加它们,我将无法在MainWindows处理事件 范围,仅在申请时。当我尝试使用ItemsControl.ItemTemplate时 似乎没有任何改变。 需要一些帮助......我哪里错了?
由于
现在尝试在xaml中进行绑定:
<ItemsControl x:Name="IC_Contacts" BorderThickness="0"
ItemsSource="{Binding Source=contacts}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="10" />
</Grid.ColumnDefinitions>
<!--<Expander x:Name="myExp" Grid.Column="0" Template="{StaticResource ContactExpander}"
Header="{Binding Path=Name}"
my:ExpanderImage.ExpImg="{Binding Path=ImageName}"/>-->
<TextBox Text="{Binding Name}"/>
<Button Grid.Column="1" Height="20" Width="10" Content="Edit"></Button>
<Button Grid.Column="2" Height="20" Width="10" Content="Delete"></Button>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我在mainwindow构造函数中填充联系人:
public MainWindow()
{
InitializeComponent();
ContactsManager cm = new XMLContactsManager();
DataContext = this;
contacts = cm.LoadContacts().OrderBy(c => c.Name).ToList();
}
启动应用程序时,似乎itemscontrol绑定到我的联系人,但
<TextBox Text="{Binding Name}"/>
不指定联系人属性。 这是我的联系班:
[Serializable]
public class PersonalContact
{
public string Name { get; set; }
public int Mobile { get; set; }
public int Phone { get; set; }
public DateTime DateOfBirth { get; set; }
public string Address { get; set; }
public string ImageName { get; set; }
public PersonalContact()
{
}
}