[英]How To Bind to a Control Reference from a DataTemplate within DataGrid
我沒有使用基於MVVM或PRISM的模型。 我試圖將DataGrid DataTemplate內部綁定到與DataGrid處於同一級別的控件。 當我這樣做時,我將返回null。
2個問題:
什么是LayoutRoot? 當我引用它(在這種情況下是網格)時,將返回一個對象。 如果在XAML中將LayoutRoot更改為畫布,則返回null。
如何在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.