【问题标题】:Creating a clickable image in WPF在 WPF 中创建可点击的图像
【发布时间】:2011-02-12 19:26:09
【问题描述】:

我想制作一个显示图像并在单击时可以调用命令的用户控件。 稍后我想将这些控件的列表绑定到产品列表。

【问题讨论】:

    标签: wpf mvvm mvvm-foundation clickable-image


    【解决方案1】:

    试试这个非常直接的方法

    <Grid>
            <Button Height="50" Width="50">
                <Button.Template>
                    <ControlTemplate>
                        <Image Source="yourimage.png"/>
                    </ControlTemplate>
                </Button.Template>
            </Button>
    
        </Grid>
    
    private void Button_Click(object sender, RoutedEventArgs e)
            {
               // do smt
            }
    

    【讨论】:

    • 这是我见过的最直接的方法,无需覆盖按钮的所有视觉样式。
    • 我已经采用了这种方法,但是由于您实际上是在图像名称中硬编码,因此可重用性已经过时了。但是,它符合我的需要。
    • @jrandomuser 看看我的回答。
    • 好的,但没有悬停图像?它在这里不是真正的按钮
    【解决方案2】:

    好吧,在稍微摆弄之后,一个简单的按钮就可以完成这项工作。这里是:

    <Button Command="{Binding Path=DisplayProductCommand}" >
       <Image Source="..\Images\my-beautiful-product.jpg"/>
    </Button>
    

    【讨论】:

    • 这不是可点击的图片,这是一个按钮,里面有图片。我很困惑这被标记为已接受的答案。 This 应该是公认的答案。
    【解决方案3】:

    有几种方法可以做到这一点,但一种简单的解决方案是使用按钮(也许可以去掉边框和背景的样式),并使用图像作为按钮的内容。

    您可以稍后使用 ListBox 或类似的,并覆盖 DataTemplate 以使用每个产品的按钮和图像。

    【讨论】:

    • 这实际上是我采取的第一条路线,但我想知道是否有更清洁的解决方案。
    【解决方案4】:
       <Image Name="imageFoo" Source="/AppFoo;component/Foo.png" Width="32" Cursor="Hand" MouseUp="imageFoo_MouseUp"/>
    
        private void imageFoo_MouseUp(object sender, MouseButtonEventArgs e)
        {
            //Do something
        }
    

    【讨论】:

    • 抱歉,mico,没有完全理解您的要求。让我把我的答案留在那里,以防万一有人需要一种快速的方法来获得可点击的图像。
    【解决方案5】:

    我不了解你们,但 PreviewMouseDownTouchUp 与我的绑定一起工作得很好:

    <Image x:Name="bla" Source="{Binding blabla}" ... TouchDown="bla_TouchDown" PreviewMouseDown="bla_PreviewMouseDown">
    

    我正在使用 VS 2015

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多