[英]WPF Datagrid view header binding
實際上,我面臨的問題與標題所說的略有不同。 我嘗試在下面總結問題。
Class PersonnelViewModel
{
public SelectedPersonnelItem PersonnelItemViewModel;
}
Class PersonnelItemViewModel
{
}
視圖的數據上下文為A,而數據網格的Item源為SelectedPersonnelItem ,它是類A中的B類型屬性。 現在我想將網格列綁定到A類中定義的屬性。 但是它不能作為網格的上下文使用另一類( B )。 我該如何解決這個問題?
XAML
<DataGrid Grid.Row="1"
SelectedItem="{Binding SelectedPersonnelItem}"
Name="PersonnelGrid"
ItemsSource="{Binding PersonnelGridData}"
event:DatagridRowDoubleClickHandler.MethodName="EditRecord"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsItemChecked, UpdateSourceTrigger=PropertyChanged}"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Name/Company"
Binding="{Binding Name}" />
<DataGridTextColumn Header="Qualification"
Binding="{Binding Qualification}" />
<DataGridTextColumn Header="Arrival"
Binding="{Binding ArrivalDate}" />
<DataGridTextColumn Header="Departure"
Binding="{Binding DepartureDate}" />
</DataGrid.Columns>
</DataGrid>
您可以使用以下方法訪問父級數據上下文
Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type DataGrid}}, Path=DataContext.ColumnName}"
所以要添加一列顯示A的屬性
<DataGridTextColumn Header="Company" Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.Company}"/>
最終,我設法使其正常運行。 如果我直接將屬性綁定到列標題,則不會填充值。
我必須執行以下操作:
<DataGridTextColumn Binding="{Binding Name}">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding DataContext.MyProp,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}}" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.