MVVM模式下 DataTemplate 中控件的绑定

简介: 原文:MVVM模式下 DataTemplate 中控件的绑定  今天给ListBox中通过DataTemplate生成的Button绑定命令时,一开始Button始终找不到绑定的命令。现找到了正确的绑定方式,特来记录一下。
原文: MVVM模式下 DataTemplate 中控件的绑定

  今天给ListBox中通过DataTemplate生成的Button绑定命令时,一开始Button始终找不到绑定的命令。现找到了正确的绑定方式,特来记录一下。

  先上个正确的示例: 

<ListBox Grid.Column="0" ItemsSource="{Binding CallBussiness}">
    <ListBox.ItemsPanel>
         <ItemsPanelTemplate>
                <WrapPanel HorizontalAlignment="Right" VerticalAlignment="Center" Orientation="Horizontal" />
         </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
<TextBlock Text="{Binding Property1}"/> <Button VerticalAlignment="Top" HorizontalAlignment="Left" Margin="25,0,0,0" Command="{Binding Path=DataContext.HandUpCommand, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}" CommandParameter="{Binding}"/> </StackPanel> </DataTemplate> </ItemsControl.ItemTemplate> </ListBox>

因为使用DataTemplate时,ListBoxItem的DataContext将是ItemsSource绑定的列表的项,其类型就是列表中的单个Model。所以不能使用默认的绑定源,而要使用相对源(RelativeSource)。并且MVVM模式下,VM一般都是绑定窗口到DataContext,窗口中的控件再继承(可能这个词不是很准确)窗口的DataContext,因此指定相对源后,Path还需要从DataContext属性开始找想要的命令。如上面的Button,不能直接Path=HandUpCommand,因为HandUpCommand不是直接存在ListBox中的。

目录
相关文章
|
前端开发 C#
WPF 之 数据与命令绑定 (MVVM方式)
WPF 之 数据与命令绑定 (MVVM方式)
206 0
WPF 之 数据与命令绑定 (MVVM方式)
|
前端开发
RadioButton单选框的绑定问题(MVVM)
RadioButton单选框的绑定问题(MVVM)
【JetPack】视图绑定 ( ViewBinding ) 各种应用 ( 视图绑定两种方式 | Activity 布局 | 对话框布局 | 自定义组件布局 | RecyclerView 列表布局 )
【JetPack】视图绑定 ( ViewBinding ) 各种应用 ( 视图绑定两种方式 | Activity 布局 | 对话框布局 | 自定义组件布局 | RecyclerView 列表布局 )
593 0
【JetPack】视图绑定 ( ViewBinding ) 各种应用 ( 视图绑定两种方式 | Activity 布局 | 对话框布局 | 自定义组件布局 | RecyclerView 列表布局 )
|
前端开发 C#
WPF MVVM模式下实现ListView下拉显示更多内容
原文:WPF MVVM模式下实现ListView下拉显示更多内容 在手机App中,如果有一个展示信息的列表,通常会展示很少一部分,当用户滑动到列表底部时,再加载更多内容。这样有两个好处,提高程序性能,减少网络流量。
1564 0
|
虚拟化 容器
Xamarin自定义布局系列——ListView的一个自定义实现ItemsControl(横向列表)
原文:Xamarin自定义布局系列——ListView的一个自定义实现ItemsControl(横向列表) 在以前写UWP程序的时候,了解到在ListView或者ListBox这类的列表空间中,有一个叫做ItemsPannel的属性,它是所有列表中子元素实际的容器,如果要让列表进行横向排列,只需要在...
1119 0
|
前端开发 C#
使用MVVM DataTemplate在WPF XAML视图之间切换
原文 使用MVVM DataTemplate在WPF XAML视图之间切换 更新:这个技术的改进版本,一个不创建视图,可以在以下链接找到: http://www.technical-recipes.
1304 0
|
C#
WPF ViewModel与多个View绑定后如何解决的问题
原文:WPF ViewModel与多个View绑定后如何解决的问题 当重复创建View并绑定同一个ViewModel后,ViewModel中的字段更新,在新的View中的没有反应或者在View中找不到相应的视觉树(如ListBox的ListBoxItem) 初始的解决方案:View关闭后,注销属性Unregister Dependency。
1405 0
|
前端开发 C#
WPF 介绍一种在MVVM模式下弹出子窗体的方式
原文:WPF 介绍一种在MVVM模式下弹出子窗体的方式 主要是通过一个WindowManager管理类,在window后台代码中通过WindowManager注册需要弹出的窗体类型,在ViewModel通过WindowManager的Show方法,显示出来。
2361 0
|
前端开发
MVVM里绑定TreeView控件的SelectedItem
原文:MVVM里绑定TreeView控件的SelectedItem 来源:http://stackoverflow.com/questions/9143107/get-selected-treeviewitem-using-mv...
1057 0
|
C#
潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据
原文:潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据 目前自己对treeview的感慨很多 今天先讲 面对这种 表结构的数据 的其中一种绑定方法,后面多几列其他属性都没关系,例如多个字段, 1  A  0 2  B  0 3  C  0 4  D  1 5  E  2 6  F  4 7  G 1 .
2408 0