在datagrid中绑定datagrid

时间:2013-07-16 14:08:38

标签: wpf data-binding mvvm

为什么我无法绑定datagrid属性所选项? 我的ViewModel中有属性

    protected TheFile curentFile ;
    public TheFile CurentFile
    {
        get { return curentFile; }
        set { curentFile = value;
            OnPropertyChanged("CurentFile"); }
    }

这是我的datagrid:

    <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}">

1 个答案:

答案 0 :(得分:1)

此处DataContext存在问题。

RowDetailsTemplate中,您尝试绑定到主视图模型中的属性,但DataContext的{​​{1}}是行项目。

如果要绑定到主视图模型中的属性,则应使用RowDetailsTemplate绑定。

试试这个:

RelativeSource