一、直接绑定(对于有事件的控件可以通过直接绑定的方式)
1、view
-
<hc:SideMenuItem Header="接谈中" Cursor="Hand" Command="{Binding AddTabItemCommand}" CommandParameter="PDjtList.xaml">
-
<hc:SideMenuItem.Icon>
-
<Image Source="/Images/icons/jtz.png" Width="24" Height="24"/>
-
</hc:SideMenuItem.Icon>
-
</hc:SideMenuItem>
2、viewmodel
-
/// <summary>
-
/// 命令:传递参数
-
/// </summary>
-
public RelayCommand<string> AddTabItemCommand =>
-
new Lazy<RelayCommand<string>>(() =>
-
new RelayCommand<string>(AddTabItem)).Value;
-
-
-
/// <summary>
-
/// 添加新页面
-
/// </summary>
-
/// <param name="param"></param>
-
private void AddTabItem(string param)
-
{
-
string test = param;
-
-
-
}
二、EventTrigger绑定(对于通过datatemp遍历的控件没有事件可以绑定的情况,如listbox)
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
-
<ListBox Name="sideMenu" SelectedIndex="{Binding MenuSelectedIndex}" ItemsSource="{Binding MenuList}" BorderThickness="0" SelectionMode="Single">
-
<ListBox.ItemTemplate>
-
<DataTemplate>
-
<DockPanel Height="40">
-
<Image Width="20" Height="20" Source="{Binding Icons}"/>
-
<TextBlock Margin="10,12,0,0" FontSize="14" Text="{Binding Title}"/>
-
<TextBox x:Name="param" Visibility="Hidden" Text="{Binding Url}"/>
-
</DockPanel>
-
</DataTemplate>
-
</ListBox.ItemTemplate>
-
<i:Interaction.Triggers>
-
<i:EventTrigger EventName="SelectionChanged">
-
<command:EventToCommand Command="{Binding ElementName=sideMenu, Path=DataContext.SelectMenuCommand}" PassEventArgsToCommand="True" />
-
</i:EventTrigger>
-
</i:Interaction.Triggers>
-
</ListBox>
-
/// <summary>
-
/// 菜单选择事件
-
/// </summary>
-
public RelayCommand<SelectionChangedEventArgs> SelectMenuCommand =>
-
new Lazy<RelayCommand<SelectionChangedEventArgs>>(() =>
-
new RelayCommand<SelectionChangedEventArgs>(SelectMenu)).Value;
-
-
/// <summary>
-
/// 选中菜单打开页面
-
/// </summary>
-
private void SelectMenu(SelectionChangedEventArgs e)
-
{
-
if (e.AddedItems.Count == 0) return;
-
if (e.AddedItems[0] is MenuInfo item)
-
{
-
if (Equals(_selectedMenu, item)) return;
-
-
_selectedMenu = item;
-
DataList.Add(new TabControlModel
-
{
-
Header = item.Title,
-
Url = item.Url
-
});
-
TabSelectedIndex = DataList.ToArray().Length - 1;
-
-
}
-
}
三、Image点击事件
-
<Image x:Name="img_verifycode" Height="40" Margin="0,10,30,0" Source="{Binding VerifyCode}"></Image>
-
<i:Interaction.Triggers>
-
<i:EventTrigger EventName="MouseLeftButtonDown">
-
<command:EventToCommand Command="{Binding ElementName=img_verifycode, Path=DataContext.SwitchVerifyCodeCommand}" />
-
</i:EventTrigger>
-
</i:Interaction.Triggers>