[英]Click image within Button control event not firing
我有以下代码,单击图像时不会触发Click事件。 当我在图像外部单击时,按钮单击事件将触发。
XAML:
<Grid x:Name="LayoutRoot" Background="White">
<Button x:Name="btnMain" Background="Purple" >
<StackPanel x:Name="spButtonPanel" Background="Black">
<telerik:RadImageEditor x:Name="imgButtonImage" />
<TextBlock x:Name="tbButtonText" />
</StackPanel>
</Button>
</Grid>
CS:
this.btnMain.Click += new RoutedEventHandler(btnMain_Click);
this.imgButtonImage.MouseLeftButtonDown += new MouseButtonEventHandler(imgButtonImage_Click);
this.spButtonPanel.MouseLeftButtonDown += new MouseButtonEventHandler(spButtonPanel_Click);
在x_Click事件中只是MessageBox.Show(“Button clicked”); 其中x是btn_Main等......
单击图像时,imgButtonImage_Click不会触发。 我也试过改变ZIndex无济于事。
你为什么在一个按钮内的stackpanel里面使用<telerik:RadImageEditor x:Name="imgButtonImage" />
? 在按钮内部使用图像编辑器对我来说没有意义。 如果要在按钮内显示带有文本的图像,可以使用类似于:
<Button Style="{StaticResource MyButtonStyle}">
<StackPanel>
<Image Source="{Binding ...} Margin="10" />
<TextBlock Text="Localizable Text" />
</StackPanel>
</Button>
要使用base64string作为图像源,您可以执行以下操作:
string bgImage64 = // image stored in string
byte[] binaryData = Convert.FromBase64String(bgImage64);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = new MemoryStream(binaryData);
bi.EndInit();
imgButtonImage.Source = bi;
要封装此代码,并直接在xaml中使用,您可以创建一个IValueConverter并使用类似<Image Source="{Binding ...stringDataSource..., Converter={StaticResource MyBase64ImageConverter}}"/>
用JSimoes帮助弄清楚它。
BitmapImage bi = new BitmapImage();
bi.SetSource(new MemoryStream(imageBytes));
imgButtonImage.Source = bi;
谢谢。
我不知道Telerik RadImageEditor控件,但我猜它会处理鼠标冒泡事件。 您应该使用隧道事件(事件名称以Preview
开头),例如PreviewMouseLeftButtonDown
。
尝试将事件添加到xaml
<Button x:Name="btnMain" Background="Purple" Click="btnMain_Click" >
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.