Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Silverlight 嵌套数据网格中的数据网格高度问题(使用三个数据网格时)_Silverlight_Silverlight 4.0 - Fatal编程技术网

Silverlight 嵌套数据网格中的数据网格高度问题(使用三个数据网格时)

Silverlight 嵌套数据网格中的数据网格高度问题(使用三个数据网格时),silverlight,silverlight-4.0,Silverlight,Silverlight 4.0,我有一个嵌套的数据网格(由三个数据网格组成)。在这里,我能够显示没有问题的数据 第一个datagrid有5行 这里出现的主要问题是,当您单击第一个datagrid中的任意一行时,我显示了2个datagrid(它有10行) 假设我单击2个数据网格中的3行。它在第三个数据网格中显示更多记录。 再次单击2数据网格中的5行时,它会在第三个数据网格中显示更多记录。 现在所有记录都显示良好 当您尝试合并2个数据网格中的3行时,它会合并,但问题是第三个数据网格占用空间显示记录的高度(我们可以看到主2个数据网格

我有一个嵌套的数据网格(由三个数据网格组成)。在这里,我能够显示没有问题的数据

第一个datagrid有5行 这里出现的主要问题是,当您单击第一个datagrid中的任意一行时,我显示了2个datagrid(它有10行)

假设我单击2个数据网格中的3行。它在第三个数据网格中显示更多记录。 再次单击2数据网格中的5行时,它会在第三个数据网格中显示更多记录。 现在所有记录都显示良好

当您尝试合并2个数据网格中的3行时,它会合并,但问题是第三个数据网格占用空间显示记录的高度(我们可以看到主2个数据网格和第三个数据网格之间显示空白)

在每一个网格的第一列中,我都有一个按钮,我在这里为expand和collpase编写代码

这是我在所有datagrid按钮中实现的功能,我在其中展开collpase

希望我的问题清楚 . 任何帮助都会很好

xaml页面

 <sdk:DataGrid MinHeight="100" x:Name="dgStudent "  Width="300" SelectionMode="Extended"   RowDetailsVisibilityMode="VisibleWhenSelected" >
             <sdk:DataGrid.Columns >
                <sdk:DataGridTemplateColumn >
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button x:Name="btn"   
                            Click="btn1_Click"  >
                            </Button>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
               
                <sdk:DataGridTemplateColumn  Header="ID"  Width="100" >
                    <sdk:DataGridTemplateColumn.CellTemplate >
                        <DataTemplate >
                            <sdk:Label Content="{Binding ID}" />
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
                <sdk:DataGridTemplateColumn  Header="Name"  Width="100" >
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate >
                                <sdk:Label Content="{Binding Name}"  />
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
            </sdk:DataGrid.Columns>
 <sdk:DataGrid.RowDetailsTemplate>
                <DataTemplate>
                    <StackPanel  x:Name="spCollege"   Width="300">
                        <sdk:DataGrid x:Name="dgCollege" Width="290" SelectionMode="Extended"   RowDetailsVisibilityMode="VisibleWhenSelected"  HeadersVisibility ="None" >
                            <sdk:DataGrid.Columns>
                                <sdk:DataGridTemplateColumn >
                                    <sdk:DataGridTemplateColumn.CellTemplate >
                                        <DataTemplate>                                     
                                            <Button x:Name="btn2"   
                            Click="btn3_Click">              
                                            </Button>
                                          
                                        </DataTemplate>
                                    </sdk:DataGridTemplateColumn.CellTemplate>
                                </sdk:DataGridTemplateColumn>
                                <sdk:DataGridTemplateColumn  Header="College"   Text="{Binding College}" >                                                         
                                <sdk:DataGridTemplateColumn  Header="Subjects"  Text="{Binding Subjects}" >                           
                            </sdk:DataGrid.Columns>
<sdk:DataGrid.RowDetailsTemplate>
                                <DataTemplate>
                                    <StackPanel x:Name="spSchool" Width="300"  >
                                        <sdk:DataGrid x:Name="dgSchool"   Width="280"   SelectionMode="Extended"   RowDetailsVisibilityMode="VisibleWhenSelected"  HeadersVisibility ="None">
                                            <sdk:DataGrid.Columns>
                                                <sdk:DataGridTemplateColumn  Width="24">
                                                    <sdk:DataGridTemplateColumn.CellTemplate>
                                                        <DataTemplate>

                                                            <Button x:Name="btn"  Height="15"  
                            Click="btn3_Click">

                                                            </Button>
                                                        
                                                        </DataTemplate>
                                                    </sdk:DataGridTemplateColumn.CellTemplate>
                                                </sdk:DataGridTemplateColumn>
                                                
                <sdk:DataGridTemplateColumn  Header="School"   Text="{Binding School}" >                                                         
                                <sdk:DataGridTemplateColumn  Header="Subjects"  Text="{Binding Subjects}" >   
                                            </sdk:DataGrid.Columns>

                                        </sdk:DataGrid>
                                    </StackPanel>
                                </DataTemplate>
                            </sdk:DataGrid.RowDetailsTemplate>
                        </sdk:DataGrid>

这显然是SL网格中的一个bug。在用户折叠第二级网格中的一行后,我可以通过快速关闭并重新打开父RowDetailsTemplate来绕过此问题:

void secondLevelGrid_RowDetailsVisibilityChanged(object sender, DataGridRowDetailsEventArgs e)
{
    if (e.Row.DetailsVisibility == Visibility.Visible) return;

    var parentRow = this.GetVisualAncestors().OfType<DataGridRow>().FirstOrDefault();
    parentRow.DetailsVisibility = Visibility.Collapsed;

    var timer = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 0, 0, 200) };
    timer.Tick += (ts, te) =>
                      {
                          Dispatcher.BeginInvoke(() => parentRow.DetailsVisibility = Visibility.Visible);
                          timer.Stop();
                      };
    timer.Start();
}
void secondLevelGrid\u rowdetails可视性已更改(对象发送方,DataGridRowDetailsEventArgs e)
{
if(e.Row.DetailsVisibility==Visibility.Visible)返回;
var parentRow=this.getVisualanceTors().OfType().FirstOrDefault();
parentRow.DetailsVisibility=可见性。已折叠;
var timer=newdispatchermer(){Interval=newtimespan(0,0,0,0200)};
定时器。滴答声+=(ts,te)=>
{
Dispatcher.BeginInvoke(()=>parentRow.DetailsVisibility=Visibility.Visibility);
timer.Stop();
};
timer.Start();
}

当父行重新打开时,第二级网格中的正确行仍然被选中,因此视觉上这创造了一个相当无缝的体验。

这显然是SL网格中的一个错误。在用户折叠第二级网格中的一行后,我可以通过快速关闭并重新打开父RowDetailsTemplate来绕过此问题:

void secondLevelGrid_RowDetailsVisibilityChanged(object sender, DataGridRowDetailsEventArgs e)
{
    if (e.Row.DetailsVisibility == Visibility.Visible) return;

    var parentRow = this.GetVisualAncestors().OfType<DataGridRow>().FirstOrDefault();
    parentRow.DetailsVisibility = Visibility.Collapsed;

    var timer = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 0, 0, 200) };
    timer.Tick += (ts, te) =>
                      {
                          Dispatcher.BeginInvoke(() => parentRow.DetailsVisibility = Visibility.Visible);
                          timer.Stop();
                      };
    timer.Start();
}
void secondLevelGrid\u rowdetails可视性已更改(对象发送方,DataGridRowDetailsEventArgs e)
{
if(e.Row.DetailsVisibility==Visibility.Visible)返回;
var parentRow=this.getVisualanceTors().OfType().FirstOrDefault();
parentRow.DetailsVisibility=可见性。已折叠;
var timer=newdispatchermer(){Interval=newtimespan(0,0,0,0200)};
定时器。滴答声+=(ts,te)=>
{
Dispatcher.BeginInvoke(()=>parentRow.DetailsVisibility=Visibility.Visibility);
timer.Stop();
};
timer.Start();
}
当父行重新打开时,第二级网格中的正确行仍处于选中状态,因此这在视觉上创造了一种相当无缝的体验。

请查看此处的解决方案:

看看这里的解决方案:

您能发布(缩写)xaml吗?我在可视化你的布局时遇到了问题。我更新了我的xaml代码。这样问题就清楚了,你能发布(缩写)xaml吗?我在可视化你的布局时遇到了问题。我更新了我的xaml代码。这样问题就清楚了