C#中自定义控件与Image控件的转换,一直报错

时间:2022-08-31 08:40:32
写了一个双击事件,代码如下:
提示“错误 5 无法将类型“QqldImp.ImageView”隐式转换为“System.Windows.Controls.Image” ,其中ImageView是自定义控件,包含一个Image和label控件

<Grid TextElement.Foreground="White">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="23*"></RowDefinition>
                <RowDefinition Height="5*"></RowDefinition>
            </Grid.RowDefinitions>
            <!--<Grid Height="{Binding ElementName=imgScrollviewer,Path=ActualHeight}" Width="{Binding ElementName=imgScrollViewer,Path=ActualWidth}">-->
            <Border BorderBrush="White" BorderThickness="0 0 0 0" Grid.Row="0">
                <Image Name="SourceImg" VerticalAlignment="Stretch"   HorizontalAlignment="Stretch" Stretch="Uniform"/>
            </Border>
            <Border Grid.Row="1">
                <Label Name="LabelImg"  Foreground="White" VerticalAlignment="Bottom" Height="25" HorizontalAlignment="Center" Margin="0,0,0,-2"/>
            </Border>   
</Grid>
</Grid>



 void itemBox_MouseDoubleClick(object sender, System.Windows.Input.MouseEventArgs e)
        {
            try
            {
                System.Windows.Controls.Image box = sender as System.Windows.Controls.Image;
                box=(ImageView)sender;(出错处)
                System.Windows.MessageBox.Show("222");
                try
                {
                    string ss = box.Tag.ToString();
                    System.Windows.MessageBox.Show("ss" + ss);
                    int targetId = int.Parse(ss);
                    System.Windows.MessageBox.Show("targetId0:" + targetId);
                    this.m_Client.ShowTrackPoints(targetId);
                }
                catch (Exception ex)
                {
                    log.Error(ex);
                }

                //System.Windows.MessageBox.Show("box:" + box.Tag.ToString());


            }
            catch(Exception ex)
            {
                log.Error(ex);
            }
        }

3 个解决方案

#1


box是System.Windows.Controls.Image ;
sender是ImageView;不是同一个对象,无法强制转换的。

你需要做的应该是获取sender里面的Image信息,把这个赋值给box

#2


引用 1 楼 njit_77 的回复:
box是System.Windows.Controls.Image ;
sender是ImageView;不是同一个对象,无法强制转换的。

你需要做的应该是获取sender里面的Image信息,把这个赋值给box
您好,想问下怎么去除sender里面的Image呢,我今天试了下,没有成功,如果方便,希望您能解答下,谢谢

#3


引用 1 楼 njit_77 的回复:
box是System.Windows.Controls.Image ;
sender是ImageView;不是同一个对象,无法强制转换的。

你需要做的应该是获取sender里面的Image信息,把这个赋值给box
谢谢了,昨天晚上解决了,把自定义控件中的属性ImageView box = sender as ImageView;    然后取出其中的Image控件,就可以了

#1


box是System.Windows.Controls.Image ;
sender是ImageView;不是同一个对象,无法强制转换的。

你需要做的应该是获取sender里面的Image信息,把这个赋值给box

#2


引用 1 楼 njit_77 的回复:
box是System.Windows.Controls.Image ;
sender是ImageView;不是同一个对象,无法强制转换的。

你需要做的应该是获取sender里面的Image信息,把这个赋值给box
您好,想问下怎么去除sender里面的Image呢,我今天试了下,没有成功,如果方便,希望您能解答下,谢谢

#3


引用 1 楼 njit_77 的回复:
box是System.Windows.Controls.Image ;
sender是ImageView;不是同一个对象,无法强制转换的。

你需要做的应该是获取sender里面的Image信息,把这个赋值给box
谢谢了,昨天晚上解决了,把自定义控件中的属性ImageView box = sender as ImageView;    然后取出其中的Image控件,就可以了