gpt4 book ai didi

c# - Silverlight ItemsControl 行为 : how do i get an item i click on?

转载 作者:太空狗 更新时间:2023-10-30 00:27:50 25 4
gpt4 key购买 nike

我正在为 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 绑定(bind)到天数列表。每天都有一个小时列表。为了表示这一点,有一个内部 ItemControl 绑定(bind)到(天)小时。并用边框表示每个小时。

看起来像这样:

 <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}}" >

最佳答案

感谢大家的帮助,但我找到了正确的方法。我知道必须有一种简单的方法来获取被点击的 UI 元素,必须有一个!

还有!而不是与发件人合作,你只需要做:e.原始来源

这让我得到了边界(以及边界的时间)。所以它就像“简单”一样:

(e.OriginalSource as Border).DataContext as Hour

关于c# - Silverlight ItemsControl 行为 : how do i get an item i click on?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5025491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com