WPF中的两个绑定场景
1. 如何在诸如ListBox这样的项中绑定父类数据上下文。
<ListBox Grid.Row="" ItemsSource="{Binding Entries}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Grid.Row="" />
<materialDesign:Card.ContextMenu>
<MenuItem Header="Action" Command="{Binding Source={StaticResource Locator},Path=Entries.BeginPing}" CommandParameter="{Binding }"/>
</ContextMenu>
</materialDesign:Card.ContextMenu>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在上述代码中,ListBox的ItemSource为某个集合,在其模板中绑定了集合实体成员的Name属性。假设存在这样一个需求,需要在个ListBoxItem上做统一的一项操作,比如检查、删除等,则需要为ListBoix的某个控件(比如按钮、右键菜单等)绑定一个父类的命令实例。蓝色的Xaml代码实现了这一点,因为它在ListBox.ItemSource的数据上下文之下,需要显示指明其绑定的DataContext。
<MenuItem Header="Action" Command="{Binding Source={StaticResource Locator},Path=Entries.BeginPing}" CommandParameter="{Binding }"/>
在本项目中,使用了GalaSoft的Mvvm方案,Locator为App的资源,其通过DI注入了大量的ViewModel实例。Entries为此XamlDataCotext的ViewModel实例名,其存储在Locator中。
在网络上,还有一些其他的使用RelativeSource的方法,但我没有实现成功。比如讲AscentType指定为父类Windows,依然没有找到Windows的DataContext。比如在Binding to alternate DataContexts[1]中,其实现为:
<Button Content="Remove" CommandParameter="{Binding}"
Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemsControl}}, Path=DataContext.RemoveItemCommand}"/>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我按照其实现方式,并没有实现成功。可能是因为使用了第三方的XAML设计方案,中间夹杂着大量的特殊标签。
2. 诸如ListBox的子项绑定了集合中的一项,如何进行格式化。
ListBox Grid.Column="" ItemsSource="{Binding ResultQueue}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=.,Converter={StaticResource pintConvert}}"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在上述Xaml中,ListBox绑定了ResultQueue集合,ListBoxItem显示集合中的每个成员。默认情况下<TextBlock Text="{Binding }}"></TextBlock>就可以绑定。如果要对其实现格式转换,则需要为其提供一个默认的占位符。
参考:
[1]Binding to alternate DataContexts, http://blogs.interknowlogy.com/2011/04/26/binding-to-alternate-datacontexts/
WPF中的两个绑定场景的更多相关文章
- 总结:WPF中MultiBinding多值绑定的方法
原文:总结:WPF中MultiBinding多值绑定的方法 一.Xaml中绑定代码: <TextBlock Grid.Row="5" Grid.Column="3 ...
- WPF中Image控件绑定到自定义类属性
首先我们定义一个Student类,有ID,Name,Photo(保存图片路径). using System; using System.Collections.Generic; using Syste ...
- 在WPF中合并两个ObservableCollection
WPF中的ObservableCollection是一个非常常用的集合对象,我们可以通过将它绑定到ListBox之类的集合控件上时,当集合发生变更时,会同步更新到界面上.但是,有的时候我们需要合并两个 ...
- 在WPF中如何使用RelativeSource绑定
在WPF绑定的时候,指定绑定源时,有一种办法是使用RelativeSource. 这种办法的意思是指当前元素和绑定源的位置关系. 第一种关系: Self 举一个最简单的例子:在一个StackPanel ...
- WPF中的Command事件绑定
在项目中使用Command绑定能够使我们的代码更加的符合MVVM模式.不了解的同学可能不清楚,只有继承自ButtonBase类的元素才可以直接绑定Command(Button.CheckBox.Rad ...
- WPF中一个控件绑定另一个控件的属性
如同一个Grid中的一个按钮根据另一个按钮的显示与否作出不同的响应: 绑定的时候通过ElementName来指定控件 <Grid Margin="50,130"> &l ...
- WPF中多个RadioButton绑定到一个属性
如图样: 在View中: <RadioButton IsChecked="{Binding Option, Converter={cvt:EnumToBooleanConverter} ...
- WPF中实现两个窗口之间传值
在使用WPF的时候,我们经常会用到窗体之间传值,下面示例主窗口传值到子窗口,子窗口传值到主窗口的方法. 一.主窗口向子窗口传值 主窗口向子窗口传值主要方法就是在子窗口建立一个接收主窗口值的变量,然后实 ...
- WPF中ComboBox控件绑定键值对操作
WPF中下拉框将键值对作为其数据源的具体操作.本实例以枚举类型以及枚举特性描述字符串生成键值对来进行. namespace ViewC { /// <summary> /// View.x ...
随机推荐
- subclipse 和 eclipse结合遇到的问题
subclipse是eclipse的一个SVN插件.但是我在使用的时候不断的报出下面的错误: the applet is attempting to access the "exists&q ...
- [JavaEE] Bootstrapping a JavaEE Application
To bootsrap the application use the following Maven archetype: mvn -DarchetypeGroupId=org.codehaus.m ...
- struct结构体在c和c++中的差别
非常多次遇到这个struct的问题,今天在这里简单总结一下我的理解 一.struct在C 中的使用 1.单独使用struct定义结构体类型 struct Student { int id; int n ...
- vim随想笔记(1)
本人是一个vim的狂热粉丝,越是使用vim,越是认为琐碎内容太多,时不时地出现一些自己没有见过的使用方法.命令. 因此准备在博客上用空余时间在阅读<学习vi和vim编辑器>的基础上总结一下 ...
- ASP.NET 4 and Visual Studio 2010
https://msdn.microsoft.com/en-us/library/ee532866.aspx The topics in this section provide informatio ...
- STM32:TIMER输出比较模式-PWM
在自己小板子上移植PWM时候又重新学习了一下,加入两点:1,对各种输出比较模式的学习:2,输出模式时加入中断 先写出函数: //TIM4 PWM部分初始化 //PWM输出初始化 //period:输出 ...
- mysql sql执行错误#1436 Thread stack overrun
1.mysql调用存储过程 call proc1() 时报错:Thread stack overrun: 6656 bytes used of a 8496 byte stack, and 1280 ...
- 【WIP】客户端JavaScript DOM
创建: 2017/10/12 初步完成: 2017/10/15 更新: 2017/10/14 标题加上[WIP],继续完成 [TODO] 补充暂略的, 搜[略] DOM树 概要 基本 ...
- 一个thinkphhp的聊天类,感觉还可以
<?phpnamespace Common\Controller;use Think\Controller;class HxController extends Controller{ /** ...
- AcWing算法基础1.4
高精度 高精度加法,高精度减法,高精度乘低精度,高精度除以低精度,大概平时用的最多的就是这四个,模板有两种(因为我现在不太会用vector,就用数组也写了个,23333) 高精度运算和人工手算差不多, ...