[英]Binding datagrid in datagrid
为什么我不能绑定 datagrid 属性选定的项目? 我的 ViewModel 中有属性
protected TheFile curentFile ;
public TheFile CurentFile
{
get { return curentFile; }
set { curentFile = value;
OnPropertyChanged("CurentFile"); }
}
这是我的数据网格:
<DataGrid IsReadOnly="True" AutoGenerateColumns="False" Grid.ColumnSpan="1" Grid.Row="1" Grid.Column="0" Grid.RowSpan="1" Name="dataGrid1" ItemsSource="{Binding SameFileGroups}" SelectedItem="{Binding CurentGroup}">
<DataGrid.Columns>
<DataGridTextColumn Header="Всього" Width="1*" Binding="{Binding TotalSizeInDirectory}"/>
<DataGridTextColumn Header="1 файл" Width="1*" Binding="{Binding OneFileSize}"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Path=Files}" AutoGenerateColumns="False" SelectedItem="{Binding Path=CurentFile, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Header="Шлях" Binding="{Binding Path=Destination}"/>
<DataGridTextColumn Header="Розмір" Binding="{Binding Path=SizeBytes}"/>
<DataGridTextColumn Header="md5" Binding="{Binding Path=Md5Hash}"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
但是这种绑定不起作用
<DataGrid ItemsSource="{Binding Path=Files}" AutoGenerateColumns="False" SelectedItem="{Binding Path=CurentFile, UpdateSourceTrigger=PropertyChanged}">
您在此处使用DataContext
有问题。
在RowDetailsTemplate
您尝试绑定到主视图模型中的属性,但RowDetailsTemplate
DataContext
是行项目。
如果要绑定到主视图模型中的属性,则应使用RelativeSource
绑定。
试试这个:
<DataGrid ItemsSource="{Binding Path=Files}"
SelectedItem="{Binding Path=DataContext.CurentFile, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"
AutoGenerateColumns="False" >
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.