我想将事件的发件人设置为事件的实际发起人以外的其他人。为我的CImage类考虑这个简单的DataTemplate:
<DataTemplate DataType="{x:Type er:CImage}">
<Grid VerticalAlignment="Center" HorizontalAlignment="Center" Margin="5">
<StackPanel Orientation="Vertical" MaxWidth="{Binding Image.Width}">
<Image Source="{Binding Image}" MouseUp="MouseUpHandler" />
<Label Content="{Binding ImageFile.Name}" />
<Label>
<TextBlock TextWrapping="WrapWithOverflow" Text="{Binding TagsJoined}" />
</Label>
</StackPanel>
</Grid>
</DataTemplate>
当用户点击此内容时:
<Image Source="{Binding ImageSource}" MouseUp="MouseUpHandler" />
“MouseUpHandler”事件处理程序需要访问“CImage”对象,其中“ImageSource”是属性,而不是“ImageSource”绑定到的“Image”对象。
有没有办法在事件本身中传达这些信息,或者我别无选择,只能让处理程序通过其他方式查找CImage?
答案 0 :(得分:1)
发件人将永远是Image对象,您无法更改。
但是,在处理程序中,您可以访问DataContext
Image
CImage
,它将成为private void MouseUpHandler(object sender, MouseButtonEventArgs e)
{
CImage instance = (CImage)((Image)sender).DataContext;
}
的对象,因为DataTemplate的DataType是CImage:
{{1}}