A Silverlight Bug ?


昨日在寫Silverlight程序的時候,遇到一個問題,感覺是Silverlight的Bug。使用版本是Silverlight5。異常信息如下:

行: 56
錯誤: Silverlight 應用程序中未處理的錯誤
代碼: 4004
類別: ManagedRuntimeError
消息: System.ArgumentException: 值不在預期的范圍內。
位於 System.Windows.Size.set_Width(Double value)
位於 System.Windows.Controls.Primitives.TabPanel.ArrangeHorizontal(Size arrangeSize)
位於 System.Windows.Controls.Primitives.TabPanel.ArrangeOverride(Size finalSize)
位於 System.Windows.FrameworkElement.ArrangeOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)

 

給出一個示例代碼:

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" 
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="SilverlightApplication1.MainPage" 
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="1024">

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="5" />
            <ColumnDefinition Width="240" />
        </Grid.ColumnDefinitions>
        <Grid  x:Name="LayoutLeft"  Grid.Column="0">
            <controls:TabControl x:Name="BottomContent" Grid.Column="0"  Grid.Row="0">
                <controls:TabItem x:Name="Item1" Header="TabItem1"   Height="25"></controls:TabItem>
                <controls:TabItem x:Name="Item2" Header="TabItem2"  Height="25"></controls:TabItem>
                <controls:TabItem x:Name="Item3" Header="TabItem3" Height="25"></controls:TabItem>
                <controls:TabItem x:Name="Item4" Header="TabItem4"   Height="25"></controls:TabItem>
                <controls:TabItem x:Name="Item5" Header="TabItem5"  Height="25"></controls:TabItem>
                <controls:TabItem x:Name="Item6" Header="TabItem6" Height="25"></controls:TabItem>
                <controls:TabItem x:Name="Item7" Header="TabItem7"   Height="25"></controls:TabItem>
                <controls:TabItem x:Name="Item8" Header="TabItem8"  Height="25"></controls:TabItem>
                <controls:TabItem x:Name="Item9" Header="TabItem9" Height="25"></controls:TabItem>
                <controls:TabItem x:Name="Item10" Header="TabItem10"  Height="25"></controls:TabItem>
            </controls:TabControl>
        </Grid>
        <controls:GridSplitter x:Name="StretchRight" Grid.Column="1" Background="#C8E0FB" Margin="0,0,0,0"  HorizontalAlignment="Stretch"  />
        <Grid  x:Name="LayoutRight"  Grid.Column="2">
            <sdk:DataGrid x:Name="DgInfo"  ColumnHeaderHeight="24"  Margin="0" AutoGenerateColumns="False" IsReadOnly="True">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTemplateColumn Header="Column1" Width="80"></sdk:DataGridTemplateColumn>
                    <sdk:DataGridTextColumn Header="Column2" Width="80"></sdk:DataGridTextColumn>
                    <sdk:DataGridTextColumn Header="Column3" Width="80"></sdk:DataGridTextColumn>
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>
        </Grid>
    </Grid>
</UserControl>
using System.Windows.Controls;

namespace SilverlightApplication1
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            this.InitTabItem();
        }

        private void InitTabItem()
        {
            Item3.Visibility = System.Windows.Visibility.Collapsed;
            Item4.Visibility = System.Windows.Visibility.Visible;
            Item5.Visibility = System.Windows.Visibility.Collapsed;
            Item6.Visibility = System.Windows.Visibility.Collapsed;
        }
    }
}

奇怪的就是InitTabItem方法的這幾行代碼,如果不隱藏TabItem,程序運行正常。一旦去隱藏TabItem,在拖拽GridSplitter的時候,有時會拋出異常。

請高手指點迷津。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM