【问题标题】:how to make click event on material design pack icon in WPF?如何在 WPF 中的材料设计包图标上进行点击事件?
【发布时间】:2019-03-11 13:29:47
【问题描述】:

我在我的 WPF 系统中使用材料设计包图标。是否可以在图标上进行单击事件之类的操作。就像当我们点击图标时它会转到我们想要的页面(类似按钮)。

这是我在 WPF WINDOWS 上的代码

 <ListViewItem Height="60">
           <StackPanel Orientation="Horizontal">
                   <materialDesign:PackIcon Kind="Man" Height="20" Width="25" Margin="10"/>
                    <Button x:Name="btnSalesman" Click="btnSalesman_Click" Content="Salesman" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="Black" FontSize="10"/>
          </StackPanel>
 </ListViewItem>

我同时使用按钮和图标(我需要两者)当用户单击图标或堆栈面板内的任何位置时,我需要它也将像我的按钮单击事件一样。可能吗 ?还是我需要使用其他图标?

【问题讨论】:

  • 你试过了吗?只需将Click="btnSalesman_Click" 移动到materialDesign:PackIcon,然后阅读有关 MVVM 的更多信息(例如here
  • 如果我将点击事件移动到materialDesign:PackIcon,它会给出类似the member "click" does not recognized的错误
  • 你应该真正学习 MVVM 以及如何在视图模型中设置与命令的绑定,而不是继续使用后面的代码。

标签: c# wpf material-design


【解决方案1】:

您可以使用 MaterialDesignPack 包中定义的 MouseDown 事件。

 <materialDesign:PackIcon Kind="MapMarkerMinus" Height="20" Width="25" Margin="10" MouseDown="UIElement_OnMouseEnter"/>

【讨论】:

  • MouseDown Event 是否适用于触摸屏系统?因为我这样做是为了触摸屏系统之类的东西
  • 对于触摸屏,您可以尝试 touchDown 事件,该事件在触摸该图标时触发事件
  • 如果你不喜欢像 WinForm 这样使用 Wpf,这个答案很好,其他想要深入 wpf 世界的人远离这种方法。
【解决方案2】:

您最好将图标放入 DataTemplate 并将模板应用于按钮;模板和样式都是 WPF 的亮点。

从我的头顶(未测试):

<Window.Resources>
    <DataTemplate x:Key="ButtonContentTemplate">
      <StackPanel Orientation="Horizontal">
        <materialDesign:PackIcon Kind="Man" Height="20" Width="25" Margin="10"/>
        <ContentPresenter Content="{Binding}"/>
      </StackPanel>
    </DataTemplate>
  </Window.Resources>

然后您可以将模板应用到一个或多个按钮:

<Button ContentTemplate="{StaticResource ButtonContentTemplate}" 
        Content="Salesman"/>

【讨论】:

  • 我已经尝试过你的答案,但它似乎对我不起作用。无论如何,谢谢你的时间:)
猜你喜欢
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
相关资源
最近更新 更多