大型网站建设哪家服务好,qq对话制作器app,wordpress基础模板下载,哪个网站可以付费做淘宝推广背景简介
软件功能为#xff0c;读取一个文件夹下的所有子文件夹#xff0c;每个文件夹对自动对应生成 一组 “按键四个勾选” 按键点击触发#xff0c;可以发送与其对应文件夹中的一些内容。这个绑定的过程我在之前的文章有过详细的介绍#xff0c;非常的简单。 这里回顾…背景简介
软件功能为读取一个文件夹下的所有子文件夹每个文件夹对自动对应生成 一组 “按键四个勾选” 按键点击触发可以发送与其对应文件夹中的一些内容。这个绑定的过程我在之前的文章有过详细的介绍非常的简单。 这里回顾一下贴一段代码
GridGrid.RowDefinitionsRowDefinition Heightauto/RowDefinition//Grid.RowDefinitionsDockPanelLabel DockPanel.DockRight Content{Binding BtnName}/Button DockPanel.DockRight Command{Binding NextCmd}下一个/ButtonButton DockPanel.DockRight Command{Binding FliesReloadCmd}文件重载/Buttonhc:TextBox Text{Binding saveInfo.BaseDirectoryPath}hc:TitleElement.Title路径 hc:TitleElement.TitlePlacementLefthc:TitleElement.HorizontalAlignmentCenterhc:TitleElement.TitleWidth50//DockPanelScrollViewer Grid.Row1 VerticalScrollBarVisibilityVisible HorizontalScrollBarVisibilityVisible ItemsControl ItemsSource{Binding ButtonList}ItemsControl.ItemsPanelItemsPanelTemplateUniformGrid Columns4//ItemsPanelTemplate/ItemsControl.ItemsPanelItemsControl.ItemTemplateDataTemplateGrid Margin5Grid.ColumnDefinitionsColumnDefinition/ColumnDefinition//Grid.ColumnDefinitionsButton Content{Binding Name} Command{Binding RelativeSource{RelativeSource ModeFindAncestor, AncestorType{x:Type UserControl}}, PathDataContext.TestCmd}CommandParameter{Binding PathContent, RelativeSource{RelativeSource ModeTemplatedParent}}/StackPanel Grid.Column1 VerticalAlignmentCenterCheckBox IsChecked{Binding Bottom}/CheckBox IsChecked{Binding Middle}/UniformGrid Columns2CheckBox IsChecked{Binding Head}/CheckBox IsChecked{Binding Ptb}//UniformGrid/StackPanel/Grid/DataTemplate/ItemsControl.ItemTemplate/ItemsControl/ScrollViewer/Grid明悟
现在我需要一个新的功能因为一个个的按照顺序点按钮实在是太低效了。我增加了一个下一个 按钮。 我的目的是通过下一个按钮来代替“一个个的按照顺序点按钮” 这个操作
迷雾 现在换成你你能给出一个思路吗 我马上就有了思路 那只要我在下一个 按钮对应的事件中获取到所有对象的实例然后再触发按键按下不久行了 于是我立刻查看了后台代码
public ObservableCollectionBtnItem ButtonList { get; set; } new ObservableCollectionBtnItem();由于我们使用的是绑定使用后台的数组其实是按键对应的数据而不是按键本身。 要想得到按键的实例似乎没有很直接的方式。结果我就在如何通过数据源获取界面对象实例 这个问题上陷入沉思
明悟
突然一个念头突然打破的循环既然是绑定为啥我还需要界面的那些按键对象是因为要那一个个触发按键吗但是触发按键是表现实际的目的是实现按键触发可以发送与其对应文件夹中的一些内容 于是注意力就从按键的点击到了功能的实现现在回到最初的诉求 增加了一个下一个 按钮。 我的目的是通过下一个按钮来代替“一个个的按照顺序点按钮” 这个操作 再之前的代码里我已经实现了最初的功能按键触发可以发送与其对应文件夹中的一些内容现在只是增加了一个下一个 按钮来代替。 之前的代码 void Test(BtnItem btnItem)
{try{//发送功能省略}catch (Exception ex){MessageBox.Show(ex.Message);}
}BtnItem 就是按键绑定数组的子项。也只是个数据。Test通过接收这个数据得知是哪个按键按下。
所以下一个按键对应的事件直接调用Test并传入对应的BtnItem就好了这样就是和界面点击按键一样了
//下一张
NextCmd new DelegateCommand(()
{ //MessageBox.Show(ButtonList[btnIndex].Name);if (btnIndex ButtonList.Count - 1){Test(ButtonList[btnIndex]);btnIndex;}else{MessageBox.Show(完毕了); }
});所以这里是需要利用ButtonList并记录下btnIndex。就能实现轮询按按钮的功能。
小结
轮询按按钮这个动作让我的思维产生的偏差让我一直想如何获取界面的按键对象 但是我们完成的绑定之后就一定要注意通过数据驱动界面能够直接用数据解决的问题就不要去想着获取界面对象。