• Silverlight DataGridTemplateColumn 中绑定事件


    前段时间一直很忙,老板催得紧:(

    从今天开始,陆续记录一些。

    在Silverlight中,想实现DataGird中最后一列是自定义的操作按钮,并按照MVVM模式绑定DataGrid的数据源、按钮事件。

    首先,初步想到的是这样子。

    <sdk:DataGrid ItemsSource="{Binding AdjustCurves}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" AutoGenerateColumns="False" MinHeight="50" x:Name="dataGrid1"  Visibility="{Binding IsShowList, Converter={StaticResource BooleanToVisibilityConverter1}}">
                        <sdk:DataGrid.Columns>
                            <sdk:DataGridTextColumn Header="名称" Binding="{Binding CurveName}" IsReadOnly="True" MinWidth="120"/>
                            <sdk:DataGridTemplateColumn Header="操作"  >
                                <sdk:DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <HyperlinkButton  Content="编辑" Command="{Binding EditCommand}" />
                                    </DataTemplate>
                                </sdk:DataGridTemplateColumn.CellTemplate>
                            </sdk:DataGridTemplateColumn>
                        </sdk:DataGrid.Columns>
                    </sdk:DataGrid>

    绑定代码:

     private RelayCommand _editCommand;
            /// <summary>
            /// 编辑当前
            /// </summary>
            public RelayCommand EditCommand
            {
                get
                {
                    if (_editCommand == null)
                    {
                        _editCommand = new RelayCommand( () => MessageBox.Show("Edit"));
                    }
    
                    return _editCommand;
                }
            }

    当然,按钮事件绑定是无效的,在VS的输出窗口中,可以看到错误信息(程序不会弹出错误,所以养成看输出窗口很重要啊),提示在绑定的数据源实体类找不到“EditCommand”属性。

    试了很多方法后,最后在Google中找到了解决方案:Command binding inside a DataGridTemplateColumn

    改为:

    <HyperlinkButton  Content="编辑" Command="{Binding Path=DataContext.EditCommand,RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}" />

    作者:Ivan
    个人网站:http://www.IvanBy.com
  • 相关阅读:
    极光推送
    浅谈Android的屏幕适配问题
    Git/GitHub学习第一天
    Android学习总结
    为什么现在开始写你的第一篇博客
    escape.alf.nu XSS Challenges 0-7 之一步步学XSS
    PE文件学习
    通过sqli-labs学习sql注入——基础挑战之less11-22
    通过sqli-labs学习sql注入——基础挑战之less1-10
    重学数据结构系列之——总结
  • 原文地址:https://www.cnblogs.com/oneivan/p/2772885.html
Copyright © 2020-2023  润新知