如何在 WPF/XAML 中更改事件的发送方



我想将事件的发送者设置为事件的实际发起者以外的其他内容。为我的 CImage 类考虑这个简单的数据模板:

<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"事件处理程序需要访问"ImageSource"是其属性的"CImage"对象,而不是"ImageSource"绑定到的"Image"对象。

有没有办法在事件本身中传达此信息,或者我别无选择,只能让处理程序通过其他方式查找 CImage?

发件人将始终是 Image 对象,您无法更改。

但是,在处理程序中,您可以访问ImageDataContext,这些将成为CImage的对象,因为DataTemplate的数据类型是CImage:

private void MouseUpHandler(object sender, MouseButtonEventArgs e)
{
    CImage instance = (CImage)((Image)sender).DataContext;
}

相关内容

  • 没有找到相关文章

最新更新