【发布时间】:2011-02-17 05:45:01
【问题描述】:
我正在为 ItemsControl 创建一个行为,目的是选择我单击的项目(并将其添加到选定项目列表中)。
所以很容易得到所有的物品:
hours = AssociatedObject.ItemsSource as List<Hour>;
当然我可以写 hours[0].Selected = true;
但是我有一个鼠标事件,我试着写这样的东西:
void AssociatedObject_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
hour = sender as Hour;
}
问题是,它没有像我预期的那样工作......发件人不是 Hour,而是 ItemsControl。
我不知道点击了哪个小时。 那么我应该怎么做才能得到时间呢?
编辑 我的代码是这样工作的: 有一个 ItemsControl 绑定到 Days 列表。 每天都有一个小时列表。 为了表示这一点,有一个绑定到(天)小时的内部 ItemControl。 为了代表每个小时,有一个边界。
看起来像这样:
<ItemsControl x:Name="daysPanel" Grid.Column="1" ItemsSource="{Binding Days}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl x:Name="dayHours" ItemsSource="{Binding Hours}" Grid.Row="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Name="dayHourBorder" Tag="{Binding}" Height="30" BorderBrush="#B0B6BE" Width="193" BorderThickness="1,0,1,1" Background="{Binding Path=Selected, Converter={StaticResource boolToColorConverter}}" >
【问题讨论】:
标签: c# silverlight itemscontrol behavior