WPF新手 - 如何将整个Binding对象存储在DataGrid的一行中?

时间:2011-07-18 15:24:43

标签: c# wpf

我是WPF的新手,所以可能会有一个简单的答案,但这对我来说并不明显。

网格显然代表了我的Configured Port对象的集合。我想存储Configured Port对象(每行的Binding),以便在单击网格单元格时将其传递给MVVM链中的下一个UserControl。

我确实找到了this SO question,但评论的部分正是我所缺少的。

在此先感谢,我确信有一个简单的解决方案。

2 个答案:

答案 0 :(得分:2)

我会用这个(除了内部最多的xaml之外的所有内容都来自你链接到的其他SO帖子:

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" >
   <DataGrid.Columns>
        <DataGridTemplateColumn Header="Custom Column">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Tag="{Binding}" Content="Click Me" Click="Button_ClickHandler"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridtemplateColumn>
    </DataGrid.Columns>
</DataGrid>

然后是点击处理程序的来源:

private void Button_ClickHandler(object sender, EventArgs e)
{
    var clickedConfiguredPort = ((FrameworkElement)sender).Tag as ConfiguredPort;
    DoStuff(clickedConfiguredPort);
}

答案 1 :(得分:1)

查看这篇文章:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/1b694f75-7621-4c88-8055-6c31c601c87f/

当我这样做时,我有预定义的列,所以我使用了第二个解决方案,但是如果你想自动生成列,你可以实现第一个解决方案。