#c# #wpf #material-design
#c# #wpf #material-design
Вопрос:
Я использую значок material design pack в своей системе WPF. возможно ли создать что-то вроде события щелчка по значку. это похоже на то, что когда мы нажимаем на значок, он переходит на нужную нам страницу (что-то вроде кнопки).
это мой код в WINDOWS WPF
<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>
Я использую и кнопку, и значок (и мне нужны оба) дело в том, что мне нужно, когда пользователь нажимает на значок или где-либо внутри stackpanel, это также будет действовать как мое событие нажатия кнопки. Возможно ли это? или мне нужно использовать другой значок?
Комментарии:
1. Вы пробовали это? Просто перейдите
Click="btnSalesman_Click"
кmaterialDesign:PackIcon
, а затем прочитайте больше о MVVM ( здесь , например)2. если я переместу событие щелчка в
materialDesign:PackIcon
, это выдаст ошибку, что-то вродеthe member "click" does not recognized
3. Вам действительно следует изучить MVVM и как настроить привязку к команде в viewmodel, чем продолжать использовать исходный код.
Ответ №1:
Вы можете использовать событие наведения курсора мыши, определенное в пакете MaterialDesignPack.
<materialDesign:PackIcon Kind="MapMarkerMinus" Height="20" Width="25" Margin="10" MouseDown="UIElement_OnMouseEnter"/>
Комментарии:
1.
MouseDown Event
применимо ли для системы с сенсорным экраном? потому что я делаю это для чего-то вроде системы с сенсорным экраном2. для сенсорного экрана вы можете попробовать событие touchDown, которое запускает событие при касании этого значка
3. Если вы не хотите использовать Wpf вроде WinForm, этот ответ подойдет, для остальных, кто хочет погрузиться в мир 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"/>
Комментарии:
1. Я попробовал ваш ответ, но, похоже, у меня это не сработало. В любом случае спасибо за ваше время 🙂