zoukankan      html  css  js  c++  java
  • WPF ListBoxItem DataTempldate command 执行问题

    今天用到MVVM,在listboxItem中做command处理。因为是要获取数据,修改ListBox模板,但是发现command无法正确执行,写在Item中可以正确执行。

    网上也遇到类似问题,但是没有对应的解决办法。最后由@WaitingEver 给予解决。

    主要用到RelativeSource,RelativeSource属性可以根据相对于目标的关系指向源对象。通常用于目标对象和源对象不在同一个标记块中,当创建控件模板和数据模板会出现这种情况。用到RelativeSource访问顶级ListBox控件去读取相应的属性。

    出错代码:

    <ListBox.ItemTemplate>
             <DataTemplate>
                    <Image Margin="5" Source="{Binding}" Width="140" Height="90" Stretch="Fill">
                         <i:Interaction.Triggers>
                               <i:EventTrigger EventName="MouseEnter"> 
                      <i:InvokeCommandAction Command="{Binding ChangeBackGround}" CommandParameter="" /> 
                    </i:EventTrigger>
                </i:Interaction.Triggers>
              </Image>
          </DataTemplate>
    </ListBox.ItemTemplate>

    修正后代码:

    <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <Image Margin="5" Source="{Binding}" Width="140" Height="90" Stretch="Fill">
                                        <i:Interaction.Triggers>
                                            <i:EventTrigger EventName="MouseEnter">
                                                <i:InvokeCommandAction Command="{Binding Path=DataContext.ChangeBackGround,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox}}" CommandParameter="" />
                                            </i:EventTrigger>
                                        </i:Interaction.Triggers>
                                    </Image>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
  • 相关阅读:
    ArrayList removeRange方法分析
    LinkedHashMap源码分析(基于JDK1.6)
    LinkedList原码分析(基于JDK1.6)
    TreeMap源码分析——深入分析(基于JDK1.6)
    51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
    51 NOD 1049 最大子段和 动态规划 模板 板子 DP
    51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
    8月20日 训练日记
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/xcong/p/3428595.html
Copyright © 2011-2022 走看看