簡體   English   中英

如何從DataGrid中的DataTemplate綁定到控件引用

[英]How To Bind to a Control Reference from a DataTemplate within DataGrid

我沒有使用基於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>

在我的Canvas中,我具有以下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。

在此先感謝您的幫助或建議。

可能由於我未使用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控件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM