zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    51nod1381 硬币游戏
    51nod1381 硬币游戏
    51nod1384 全排列
    LOJ P10130 点的距离 题解
    POJ P1985 Cow Marathon 题解
    求树的直径(两种方法)
    洛谷 P3518 [POI2011] SEJ-Strongbox 题解
    洛谷 UVA12101 Prime Path 题解
    POJ P2251 Dungeon Master 题解
    POJ P3009 Curling 2.0 题解
  • 原文地址:https://www.cnblogs.com/oneivan/p/2772885.html
Copyright © 2011-2022 走看看