首页 > 其他分享 >TriggerParameterPath的用法

TriggerParameterPath的用法

时间:2024-07-09 22:43:24浏览次数:14  
标签:string Items private 用法 Add TriggerParameterPath public

1、先介绍TriggerParameterPath的AddedItems方法吧
设计场景
点击用户名罗列出用户的详细信息,或者点击配方罗列出配方的详细信息
在WPF的官方例子中,它是这样写的
有上下两层,点击第一行的用户名,第二行罗列对应的信息

 <!--  可以用来罗列信息,不同的值对应不同的信息  -->
 <StackPanel>
     <TextBlock
         Margin="5,15,0,10"
         FontFamily="Verdana"
         FontSize="11"
         FontWeight="Bold">
         My Friends:
     </TextBlock>

     <!--  如果ListBox不写模板的话,只绑定第一项list[0]  -->
     <ListBox
         Width="200"
         IsSynchronizedWithCurrentItem="True"
         ItemsSource="{Binding Source={StaticResource MyFriends}}" />
     <TextBlock
         Margin="5,15,0,5"
         FontFamily="Verdana"
         FontSize="11"
         FontWeight="Bold">
         Information:
     </TextBlock>

     <!--  罗列信息,写一个内容模板  -->
     <ContentControl Content="{Binding Source={StaticResource MyFriends}}" ContentTemplate="{StaticResource DetailTemplate}" />
 </StackPanel>

它使用了ContentControl,也就是说上下两层其实绑定的都是同一组数据,然后写了 IsSynchronizedWithCurrentItem="True" 让上下两层数据保持同步,那么点击用户名罗列用户信息就实现了
接下来我们说说Prism的TriggerParameterPath
在Prism的官方例子中

 <ListBox
     Grid.Row="1"
     Margin="5"
     ItemsSource="{Binding Items}"
     SelectionMode="Single">
     <i:Interaction.Triggers>
         <!--  This event trigger will execute the action when the corresponding event is raised by the ListBox.  -->
         <i:EventTrigger EventName="SelectionChanged">
             <!--  This action will invoke the selected command in the view model and pass the parameters of the event to it.  -->
             <prism:InvokeCommandAction Command="{Binding SelectedCommand}" TriggerParameterPath="AddedItems" />
         </i:EventTrigger>
     </i:Interaction.Triggers>
 </ListBox>
 <StackPanel
    Grid.Row="2"
    Margin="5"
    Orientation="Horizontal">
    <TextBlock FontWeight="Bold" Foreground="DarkRed">Selected Item:</TextBlock>
    <TextBlock
        Margin="5,0"
        AutomationProperties.AutomationId="SelectedItemTextBlock"
        FontWeight="Bold"
        Foreground="DarkRed"
        Text="{Binding SelectedItemText}" />
</StackPanel>

后台代码

 public class MainWindowViewModel : BindableBase
 {
     private string _title = "Prism Unity Application";
     public string Title
     {
         get { return _title; }
         set { SetProperty(ref _title, value); }
     }

     private string _selectedItemText;
     public string SelectedItemText
     {
         get { return _selectedItemText; }
         private set { SetProperty(ref _selectedItemText, value); }
     }

     public IList<string> Items { get; private set; }

     public DelegateCommand<object[]> SelectedCommand { get; private set; }

     public MainWindowViewModel()
     {
         Items = new List<string>();

         Items.Add("Item1");
         Items.Add("Item2");
         Items.Add("Item3");
         Items.Add("Item4");
         Items.Add("Item5");

         // This command will be executed when the selection of the ListBox in the view changes.
         SelectedCommand = new DelegateCommand<object[]>(OnItemSelected);
     }

     private void OnItemSelected(object[] selectedItems)
     {
         if (selectedItems != null && selectedItems.Count() > 0)
         {
             SelectedItemText = selectedItems.FirstOrDefault().ToString();   //返回序列中第一个元素
         }
     }
 }

EventTrigger:
<i:EventTrigger EventName="SelectionChanged"> 这行代码创建了一个事件触发器,它监听 ListBox 控件上的 SelectionChanged 事件。

InvokeCommandAction:
<prism:InvokeCommandAction Command="{Binding SelectedCommand}" TriggerParameterPath="AddedItems" /> 这行代码定义了一个动作,当事件触发器检测到事件时执行。Command 属性绑定到 ViewModel 中的 SelectedCommand 属性,这意味着它将执行与该属性关联的命令。

TriggerParameterPath:
TriggerParameterPath="AddedItems" 指定了传递给命令的参数来源。在这里,AddedItems 将你点击的SelectedItem传递给后台命令的参数

标签:string,Items,private,用法,Add,TriggerParameterPath,public
From: https://www.cnblogs.com/guchen33/p/18292877

相关文章

  • PopupMenuButton组件的用法
    文章目录1.概念介绍2.使用方法3.示例代码我们在上一章回中介绍了Sliver综合示例相关的内容,本章回中将介绍PopupMenuButton组件.闲话休提,让我们一起TalkFlutter吧。1.概念介绍我们在本章回中介绍的PopupMenuButton组件位于AppBar右侧,通常显示三个圆点图标,点......
  • Go 中空结构体的用法,我帮你总结全了!
    Go中空结构体的用法,我帮你总结全了!原创 江湖十年 Go编程世界 2024年06月05日07:51 浙江 4人听过在Go语言中,空结构体 struct{} 是一个非常特殊的类型,它不包含任何字段并且不占用任何内存空间。虽然听起来似乎没什么用,但空结构体在Go编程中实际上有着广泛的应......
  • 【yarn】安装与配置——(秒懂yarn安装用法)
    yarn安装与配置技术文档1.yarn的安装1.1使用npm安装Yarn1.2使用安装脚本1.3通过Homebrew安装(macOS)1.4通过Chocolatey安装(Windows)1.5通过安装包管理器(Linux)2.配置Yarn2.1配置镜像源2.2配置缓存目录2.3查看配置3.初始化项目4.常用命令4.......
  • 【Shell】sed xargs grep awk的组合用法
    一、批量删除指定字符串"slave-xxx":grep-inr"slave-xxx"|awk-F':''{print$1}'|xargs-n1-I{}sed-i'/slave-xxx/d'{}二、批量替换指定字符串"slave-xxx":grep-inr"slave-abc"|awk-F':'......
  • conda pip pip3 安装包的一些常见用法
    查看当前conda配置condaconfig--showchannels安装延时操作pip3--default-timeout=100installd2l-0.17.6-py3-none-any.whl指定镜像源操作pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpled2l-0.17.6-py3-none-any.whl删除所有源,换回默认condaconfig--rem......
  • C++ string基础用法
    基本操作构造与初始化默认构造:创建一个空字符串 std::strings;从C风格字符串构造:std::strings="Hello";从范围构造:std::strings(begin,end);从迭代器构造:std::strings(it_begin,it_end);从字符数组构造:std::strings(arr,arr+size);从重复字符构造:std::stri......
  • display grid的基本用法
    display:grid是CSS网格布局的一部分,它用于创建一个基于网格的布局系统。网格布局允许开发者通过定义行和列来更精确地控制元素的位置和对齐。以下是display:grid的一些基本用法:一、基本用法<divclass="grid-container"><divclass="grid-item">1</div><divclass="g......
  • VSCode实现Markdown用法
    Python学习黄俊人一、Markdown语法标题一级标题二级标题引用引用一段话列表无序列表列表1列表2列表3有序列表嵌套TodoListab表格左对齐居中对齐右对齐abc段落换行?——两个以上空格后回车/空一行分割线——......
  • 条件变量condition_variable用法学习
    转自:https://www.cnblogs.com/fenghualong/p/13855360.html1.介绍 condition_variable类似于信号量机制,实现了线程的等待和唤醒。wait() :阻塞等待的同时释放锁(原子操作),还可以添加阻塞判断函数,详见代码notify_all() :唤醒所有阻塞等待的线程notify_one():唤醒某一个等......
  • DAY 1: C语言异或(^)以及按位与(&)的用法
    1.异或(^)的定义        在C语言中,异或操作符是^。异或操作符用于对两个操作数执行按位异或运算,即只有在两个操作数对应位不同时,结果为1。即相同为0不同为1。2.重要结论    1.任何一个数,假定为a,0^a等于a(不进位计算求和),a^a等于0。        2.异或运......