Silverlight ComboBox值不在预期范围内

时间:2013-12-03 15:20:36

标签: c# silverlight combobox

我们正在开发一个silverlight 5应用程序。在我们的应用程序中,我们使用组合框控件。 当组合框打开(IsDropDownOpen = true)并且组合框具有选定值并且组合框在SizeChange事件期间被移除并在可视树中读取时,抛出以下异常:“值不会下降在预期的范围内“。

我设法在示例代码中重现此错误。这是Silverlight 5问题/错误还是我做错了什么?

<UserControl x:Class="SilverlightApplication3.MainPage"
    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"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto"/>            
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
    </Grid>
</UserControl>

背后的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Threading;

namespace SilverlightApplication3
{
    public partial class MainPage : UserControl
    {
        private ComboBox combo;
        private Button b;

        public MainPage()
        {
            InitializeComponent();

            combo = new ComboBox() { Width = 100, Height = 20 };

            combo.Items.Add(new ComboBoxItem() { Content = "Jaar", IsSelected = true});
            LayoutRoot.Children.Add(combo);

            LayoutRoot.SizeChanged += new SizeChangedEventHandler(LayoutRoot_SizeChanged);

            b = new Button() { Content = "Crash Me" };
            b.Click += new RoutedEventHandler(b_Click);

            Grid.SetRow(b, 1);

            LayoutRoot.Children.Add(b);

        }

        void b_Click(object sender, RoutedEventArgs e)
        {
            combo.IsDropDownOpen = true;
            Width = 500;            
        }

        void LayoutRoot_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            LayoutRoot.Children.Clear();
            LayoutRoot.Children.Add(b);
            LayoutRoot.Children.Add(combo);
        }
    }
}

0 个答案:

没有答案