0
我這片XAML如何綁定到 '主' 排在DataGrid RowDetailsTemplate
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525"
x:Name="Window"
>
<Grid DataContext="{Binding ElementName=Window}">
<DataGrid ItemsSource="{Binding Collection}" AutoGenerateColumns="True" CanUserAddRows="False" IsReadOnly="True">
<DataGrid.RowDetailsTemplate>
<DataTemplate DataType="{x:Type local:Master}">
<ListView ItemsSource="{Binding Details}">
<ListView.View>
<GridView>
<GridViewColumn Header="MasterField1" DisplayMemberBinding="{Binding RelativeSource={????}, Path=MasterField1}" />
<GridViewColumn Header="DetailsField1" DisplayMemberBinding="{Binding Field1}"/>
<GridViewColumn Header="DetailsField2" DisplayMemberBinding="{Binding Field2}"/>
</GridView>
</ListView.View>
</ListView>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</Grid>
與這些兩類:
public class Master
{
public string ID { get; set; }
public string MasterField1 { get; set; }
public ObservableCollection<Detail> Details { get; set; }
}
public class Detail
{
public string MasterID { get; set; }
public string Field1 { get; set; }
public string Field2 { get; set; }
}
現在我想完成是在RowDetailsTemplate我想要顯示當前的MasterField1,但我應該如何做這個綁定工作?所以我應該怎麼做:
<GridViewColumn Header="MasterField1" DisplayMemberBinding="{Binding RelativeSource={????}, Path=MasterField1}" />
爲了有MasterField1顯示?
感謝
找到了解決辦法
我能做到這一點是這樣的:
<GridViewColumn Header="MasterField1" DisplayMemberBinding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridRow}}, Path=DataContext.MasterField1}" />
是的,這將是一個解決方案,但我不想這樣做。這個例子並不代表我想要的東西。我真正想知道的是如何在XAML中進行綁定,例如,如果我想顯示可以綁定到的主數據的詳細數量: –
Kwomba
2012-04-13 09:44:46
但是你仍然可以這樣做: –
dcarneiro
2012-04-13 10:02:38
真的(我重新評估當我輸入我的答案時),但我的情況下,我無法訪問Master/Detail類的實現源。所以我必須做到這一點而不改變它們。 – Kwomba 2012-04-13 10:16:17