【问题标题】:Command - binding from DataGridTemplateColumn命令 - 从 DataGridTemplateColumn 绑定
【发布时间】:2014-11-15 00:56:38
【问题描述】:
<DataGrid ItemsSource="{Binding Occerences}" 
          AutoGenerateColumns="False"
          IsReadOnly="True">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Start index" Binding="{Binding Start}" />
        <DataGridTextColumn Header="End index"  />
        <DataGridTextColumn Header="Length"  />
        <DataGridTextColumn Header="Pattern"  />
        <DataGridTemplateColumn Header="Sequence">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Content="Sequence" Command="{Binding SequenceCommand}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="Export">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Content="Export" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>       
</DataGrid> 

<Button Content="Sequence" Command="{Binding SequenceCommand}" />

这不起作用。如何绑定到 SequenceCommand(MyViewModel、ICommand SequenceCommand)?

我不能使用框架(mvvm light 工具包、棱镜等)。

【问题讨论】:

    标签: c# wpf mvvm binding


    【解决方案1】:

    DataTemplate 中 CellTemplate 的 DataContext 将更改为绑定到未找到 SequenceCommand 的当前项。您必须为DataGrid 设置一个RelativeSource 并为DataContext.SequenceCommand 设置Path,如下所示:

    <Button Content="Sequence" 
            Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid},
            Path=DataContext.SequenceCommand}" />
    

    【讨论】:

    • 别忘了放DataContext,否则会寻找不存在的DataGrid.SequenceCommand
    猜你喜欢
    • 2011-09-28
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2017-01-16
    • 2011-04-06
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多