如何为Tabcontrol里的控件绑定事件?

让你望见影子的墙 2014-08-11 05:16:12
问题:
在Tabcontrol里有四个TabItem,然后每个Tabitem里都有各一个datagrid(每个datagrid绑定的数据不同),每个datagrid后面有一列,放的button,用来进行一些相应的操作。请问如何为button绑定事件来完成功能呢?谢谢。

如果不放到tabControll里,datagrid中button事件的绑定通过这个
<Window.CommandBindings>
<CommandBinding Command="local:MyCommands.Dial" Executed="OnDial" />
</Window.CommandBindings>
可以实现,但是把datagrid放到tabcontrol里面就用不成了,该如何实现呢?
...全文
439 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Code Jie 2015-10-15
  • 打赏
  • 举报
回复
TabControl Datagrid如何 绑定数据
exception92 2014-08-12
  • 打赏
  • 举报
回复
引用 6 楼 HEROWANG 的回复:
解决了。方法贴一下,在每个datagrid中增加一个事件 private void dgEmaillRecord_SelectionChanged(object sender, RoutedEventArgs e) { e.Handled = true; } 就OK了
你这个是 阻止事件冒泡 向上传播。真实这块的原因,到时命令没有被执行。
  • 打赏
  • 举报
回复
解决了。方法贴一下,在每个datagrid中增加一个事件 private void dgEmaillRecord_SelectionChanged(object sender, RoutedEventArgs e) { e.Handled = true; } 就OK了
  • 打赏
  • 举报
回复
原因貌似找到了。我在tabcontrol控件中增加了一个事件 SelectionChanged="tabRecord_SelecttionChanged"(这个事件用来在各个tabitem中进行切换)。有可能是这个事件导致按钮不能执行。因为去掉这个事件后,按钮就可以执行了。请问该怎么解决呢?
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
datagrid后面有一列,放的button 把这一列的XAML代码贴出来
XAML代码如下:
<DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding ID}" ClipboardContentBinding="{x:Null}" Header="序号" Width="50" />
                               <DataGridTemplateColumn ClipboardContentBinding="{x:Null}" Header="操作" Width="80">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button x:Name="bt_Dail" Content="{Binding Dail}"                                    
                                    CommandParameter="{Binding DialPara}" Width="80"
                                    Command="local:MyCommands.Dial"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
另外:如果不放在tabcontrol中的话,该按钮的命令能够实现。但是放到tabcontrol中就不行了。 我的实现方法也贴一下: 在XAML中
    <Window.CommandBindings>
        <CommandBinding Command="local:MyCommands.Dial" Executed="OnDial" />
    </Window.CommandBindings>
在cs文件中
 public class MyCommands
    {
        public static RoutedCommand Dial = new RoutedCommand("Dial", typeof(WorkUC.Chart.TelRecord));
    }

public void OnDial(Object sender, ExecutedRoutedEventArgs args)
        {
              //代码略
        }
exception92 2014-08-11
  • 打赏
  • 举报
回复

<DataGridTemplateColumn Header="Operating Items" MinWidth="250">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                            <Button Content="Edit" x:Name="btnEdit" Width="50" Height="28" Margin="5,0,0,0" PreviewMouseLeftButtonDown="Button_PreviewMouseLeftButtonDown" ></Button>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
使用模板列
DataGridTemplateColumn
exception92 2014-08-11
  • 打赏
  • 举报
回复
datagrid后面有一列,放的button 把这一列的XAML代码贴出来
E次奥 2014-08-11
  • 打赏
  • 举报
回复
我不知道你说的到底是 事件 还是 命令

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧