我有两个堆栈面板,每个包含一个数据网格。
我在加载源时设置了我的数据网格的 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 的面板的可见性吗?
谢谢你。