Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF TreeView列表框数据网格_C#_Wpf_Xaml_Datagrid_Treeview - Fatal编程技术网

C# WPF TreeView列表框数据网格

C# WPF TreeView列表框数据网格,c#,wpf,xaml,datagrid,treeview,C#,Wpf,Xaml,Datagrid,Treeview,我正在从事一个小项目,需要满足以下需求: 树视图绑定数据 将treeview项目从treeview拖动(或右键单击)到列表框 选择listboxItem以更改datagrid的绑定数据 现在我已经成功地将数据绑定到treeview,但是当我选择listboxitem时,我看不到datagrid内容更新,我尝试添加一个文本框,从中获得相同的源代码,它可以工作 你能告诉我为什么会这样吗 <Grid DataContext="{Binding ElementName=lb_Configurati

我正在从事一个小项目,需要满足以下需求:

  • 树视图绑定数据
  • 将treeview项目从treeview拖动(或右键单击)到列表框
  • 选择listboxItem以更改datagrid的绑定数据
  • 现在我已经成功地将数据绑定到treeview,但是当我选择listboxitem时,我看不到datagrid内容更新,我尝试添加一个文本框,从中获得相同的源代码,它可以工作

    你能告诉我为什么会这样吗

    <Grid DataContext="{Binding ElementName=lb_Configuration, Path=SelectedItem}">
                    <StackPanel HorizontalAlignment="Left">
                        <TextBlock Text="Basic_Param" Style="{StaticResource Heading2}" Margin="0,0,0,5" />
                        <StackPanel HorizontalAlignment="Left">
                            <DataGrid Name="dgBasicInfo" DataContext="{Binding ElementName=lb_Configuration, Path=SelectedItem}" AutoGenerateColumns="True" Margin="0,0,0,15" BorderThickness="2">
                                <DataGrid.Columns>
                                    <DataGridTextColumn Header="ModelName"  Binding="{Binding Path=ModelName}"/>
                                    <DataGridTextColumn Header="CategoryName" Binding="{Binding Path=CategoryName}" />
                                    <DataGridTextColumn Header="InputAddress" Binding="{Binding Path=IntputAddress}" />
                                    <DataGridTextColumn Header="OutputAddress" Binding="{Binding Path=OutputAddress}" />
                                    <DataGridTextColumn Header="DiagAddress" Binding="{Binding Path=DiagAddress}" />
                                    <DataGridTextColumn Header="Description" Binding="{Binding Path=Description}" />
                                </DataGrid.Columns>
                            </DataGrid>
                        </StackPanel>
    <TextBox Margin="5" Grid.Column="1" Text="{Binding Path=ModelName}" /></Grid>
    
    
    
    您没有将DataGrid实例上的ItemsSource属性绑定到任何对象。

    您没有将DataGrid实例上的ItemsSource属性绑定到任何对象。

    这不适用于DataGrid?DataContext只是您的控件所处的“数据世界”。您仍然需要将控件(在本例中为DataGrid)指向具体获取数据的位置。我尝试了以下方法:dgBasicInfo.ItemsSource=App.StoreDb.GetProducts();datagrid确实显示了数据,但在我选择不同的ListBoxItem时没有更改。问题是,如果这样做,则每次SelectedItem更改时,都需要继续分配数据。注册到列表框上的SelectionChanged事件就可以了。我应该如何编写SelectionChanged事件?如果我只是在事件中分配itemsSource,那么datagrid在第一时间就改变了。很抱歉唠叨:)这对datagrid不起作用吗?DataContext只是控件游动的“数据世界”。您仍然需要将控件(在本例中为DataGrid)指向具体获取数据的位置。我尝试了以下方法:dgBasicInfo.ItemsSource=App.StoreDb.GetProducts();datagrid确实显示了数据,但在我选择不同的ListBoxItem时没有更改。问题是,如果这样做,则每次SelectedItem更改时,都需要继续分配数据。注册到列表框上的SelectionChanged事件就可以了。我应该如何编写SelectionChanged事件?如果我只是在事件中分配itemsSource,那么datagrid在第一时间就改变了。很抱歉,我要唠叨:)