【问题标题】:How To Bind to a Control Reference from a DataTemplate within DataGrid如何从 DataGrid 中的 DataTemplate 绑定到控件引用
【发布时间】:2013-01-21 23:36:49
【问题描述】:

我没有使用基于 MVVM 或 PRISM 的模型。我正在尝试将 DataGrid DataTemplate 内部绑定到与我的 DataGrid 处于同一级别的控件。当我这样做时,我返回 null。

2 个问题:

  1. 什么是 LayoutRoot?当我引用它时,在这种情况下是一个网格,我返回一个对象。如果我在 XAML 中将 LayoutRoot 更改为画布,则返回 null。

  2. 如何在 DataGrid 列的 DataTemplate 中绑定到 XAML 中的 Canvas?

我有以下 XAML:(因长度而被修剪)

<Grid x:Name="LayoutRoot" Background="#F7F7F7">
    <Border>
        <Canvas x:Name="LayoutCanvas">
            <!-- A lot of Xaml -->
        </Canvas>
    </Border>
</Grid>

在我的画布中,我有以下 DataGrid:

<sdk:DataGrid x:Name="dgOrderContents" AutoGenerateColumns="False">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTemplateColumn Header="Thumb">
            <sdk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ucp:PhotoComponentForDataGrid Source="{Binding PhotoUrl}" PopupTarget="{Binding ElementName='LayoutCanvas' }" Width="60" />
                </DataTemplate>
            </sdk:DataGridTemplateColumn.CellTemplate>
        </sdk:DataGridTemplateColumn
    </sdk:DataGrid.Columns>
</sdk:DataGrid>

我的问题是当我尝试使用 'LayoutCanvas' 进行绑定时,值为 null 会导致错误。如果我绑定到“LayoutRoot”,它可以工作,但我需要 Canvas,因为位于我的 UserControl 中的 FloatableWindow 控件依赖于 Canvas。

提前感谢您的任何帮助或建议。

【问题讨论】:

    标签: c# silverlight datagrid user-controls


    【解决方案1】:

    我可能无法使绑定工作,因为我没有使用 MVVM 或 PRISM 模型。但我确实通过使用我的 DataGrid 的 LoadingRow 事件让它工作。

    private void dgOrderContents_LoadingRow(object sender, DataGridRowEventArgs e)
    {
        foreach (DataGridColumn col in dgOrderContents.Columns)
        {
            if (col.Header.ToString() == "Thumb")
            {
                PhotoComponentForDataGrid pcdControl = (PhotoComponentForDataGrid)col.GetCellContent(e.Row);
                pcdControl.PopupTarget= this.LayoutCanvas;
            }
        }
    }
    

    这允许我从我的自定义用户控件中引用 LayoutCanvas 控件。

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 2012-03-17
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      相关资源
      最近更新 更多