0

我有两个堆栈面板,每个包含一个数据网格。

我在加载源时设置了我的数据网格的 itemsSource。

我的面板一开始是折叠的,然后,当我选中一个 RadioButton 时,必须出现。

这是 stackpanel 的 xaml :

                            <StackPanel Name="spListeList"
                                        Grid.Row="0"
                                        Grid.Column="2"
                                        Orientation="Horizontal"
                                        Visibility="Collapsed">
                                <sdk:DataGrid Name="dgListList" 
                                              VerticalAlignment="Top"
                                              HorizontalAlignment="Left"
                                              AutoGenerateColumns="False"   
                                              AlternatingRowBackground="Orange" 
                                              IsReadOnly="True">
                                    <sdk:DataGrid.Columns>
                                        <sdk:DataGridTextColumn Binding="{Binding IdList, Mode=TwoWay}" 
                                                        Visibility="Collapsed"
                                                        Width="10"/>
                                        <sdk:DataGridTextColumn Header=" "
                                                        Width="85"
                                                        Binding="{Binding LibList, Mode=TwoWay}"/>
                                    </sdk:DataGrid.Columns>
                                </sdk:DataGrid>
                            </StackPanel>
                            <StackPanel Name="spListeJury"
                                        Grid.Row="0"
                                        Grid.Column="3"
                                        Orientation="Horizontal"
                                        Visibility="Collapsed">
                                <sdk:DataGrid Name="dgListeJury" 
                                              VerticalAlignment="Top"
                                              HorizontalAlignment="Left"
                                              AutoGenerateColumns="False"   
                                              AlternatingRowBackground="Orange" 
                                              IsReadOnly="True">
                                    <sdk:DataGrid.Columns>
                                        <sdk:DataGridTextColumn Binding="{Binding IdJury, Mode=TwoWay}" 
                                                        Visibility="Collapsed"
                                                        Width="10"/>
                                        <sdk:DataGridTextColumn Header=" "
                                                        Width="85"
                                                        Binding="{Binding LibJury, Mode=TwoWay}" />
                                    </sdk:DataGrid.Columns>
                                </sdk:DataGrid>

                            </StackPanel>

我为他们准备了 10 个单选按钮和 2 个处理程序(除名称外类似)。

void rbListeList_Checked(object sender, RoutedEventArgs e)
{
    try
    {
        if (templateColumnListeList == null)
        {
            templateColumnListeList = new DataGridTemplateColumn();
        }

        dgListeList.Columns.Remove(templateColumnListeList);
        templateColumnListeList.Header = "Select";
    templateColumnListeList.CellTemplate = (DataTemplate)Resources["ItemTemplateSelect"];
    dgListeList.Columns.Add(templateColumnListeList);
    templateColumnListeList.DisplayIndex = 0;
    spListeList.Visibility = Visibility.Visible;
    spListeJury.Visibility = Visibility.Collapsed;
}
catch (Exception ex)
{
    throw new Exception(ex.Message);
}

}

当我评论改变可见性的线条时,没有任何问题。但如果不是,我得到了 ArgumentOutOfBound 异常

并且当两个面板在开始时可见时,它们看起来很好,没有错误。当我单击单选按钮并进入处理程序时,模板列也会出现......

我尝试了另一个:当我同时显示两个可见时,应用程序运行良好,并且面板以我想要的方式出现和消失......所以看起来,当我同时折叠时出现问题。

我不能在应用程序运行时更改包含 Source 的面板的可见性吗?

谢谢你。

4

2 回答 2

0

当您在 XAML 中设置 Visibility="Collapsed" 时,该控件在窗口加载时不会被实例化。如果使用 WPF,请尝试 Visibility="Hidden"。Silverlight 不支持隐藏可见性。或尝试在 Window 的 Loaded 事件中设置 Collapsed 属性。

于 2013-04-10T15:04:47.050 回答
0

我会说上面的列代码存在问题,但是如果没有更多代码就很难说。我通常将控件的可见性属性绑定到页面数据上下文上的属性,并在需要时设置该值。如果您发布更多代码,我可能会提供更多帮助。

于 2013-04-10T15:39:59.747 回答