silverlight存在一个bug,那就是popup无法嵌套的问题,childwindow是一个popup,timepicker和timeupdown定义中也存在一个popup,即下图的效果:

我在网上(http://forums.silverlight.net/forums/p/108539/297083.aspx)找到的解决办法就是重写timeupdown的style,将popup关掉即可实现在childwindow中添加timeupdown了,我只找到了timeupdown的style定义,以下是我重写后的style:
<Style x:Key="TimePicker_IsPopupFalse"
TargetType="inputToolkit:TimeUpDown">
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="MinHeight" Value="20" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="MinWidth" Value="20" />
<Setter Property="BorderBrush">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFA3AEB9" Offset="0" />
<GradientStop Color="#FF8399A9" Offset="0.375" />
<GradientStop Color="#FF718597" Offset="0.375" />
<GradientStop Color="#FF617584" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="inputToolkit:TimeUpDown">
<Grid>
<!-- visual states -->
<vsm:VisualStateManager.VisualStateGroups>
<!-- common states-->
<vsm:VisualStateGroup x:Name="CommonStates">
<!-- all contained elements are controls that will take care of visualizing the disabled state themselves -->
<vsm:VisualStateGroup.Transitions>
<vsm:VisualTransition GeneratedDuration="0" />
</vsm:VisualStateGroup.Transitions>
<vsm:VisualState x:Name="Normal" />
<vsm:VisualState x:Name="MouseOver" />
<vsm:VisualState x:Name="Pressed" />
<vsm:VisualState x:Name="Disabled" />
</vsm:VisualStateGroup>
<!-- focus states -->
<vsm:VisualStateGroup x:Name="FocusStates">
<!-- all contained elements are controls that will take care of visualizing the focus state themselves -->
<vsm:VisualState x:Name="Focused" />
<vsm:VisualState x:Name="Unfocused" />
</vsm:VisualStateGroup>
<!-- TimeHintStates -->
<vsm:VisualStateGroup x:Name="TimeHintStates">
<vsm:VisualState x:Name="TimeHintOpenedUp">
<Storyboard>
<!--lensso修改【注释部分为样式定义】-->
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintPopup" Storyboard.TargetProperty="IsOpen">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="True"/>
</ObjectAnimationUsingKeyFrames>
<!--<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible" />
</ObjectAnimationUsingKeyFrames>-->
<!--/lensso修改-->
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
<SplineDoubleKeyFrame KeyTime="00:00:00.200" KeySpline="0,0,0,1" Value="-23" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Height">
<DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.200" KeySpline="0,0,0,1" Value="22" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="TimeHintOpenedDown">
<Storyboard>
<!--lensso修改【注释部分为原样式定义】-->
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintPopup" Storyboard.TargetProperty="IsOpen">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="True"/>
</ObjectAnimationUsingKeyFrames>
<!--<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible" />
</ObjectAnimationUsingKeyFrames>-->
<!--/lensso修改-->
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
<SplineDoubleKeyFrame KeyTime="00:00:00.200" KeySpline="0,0,0,1" Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Height">
<DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.200" KeySpline="0,0,0,1" Value="22" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="TimeHintClosed">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="00:00:20" Value="Collapsed" />
</ObjectAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
<SplineDoubleKeyFrame KeyTime="00:00:00.200" KeySpline="0,0,0,1" Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Height">
<DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="22" />
<SplineDoubleKeyFrame KeyTime="00:00:00.200" KeySpline="0,0,0,1" Value="0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
<!-- ParsingStates -->
<vsm:VisualStateGroup x:Name="ParsingStates">
<vsm:VisualState x:Name="ValidTime">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="validicon" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="InvalidTime">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="invalidicon" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="EmptyTime">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="emptyicon" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
</vsm:VisualStateManager.VisualStateGroups>
<!-- Spinner + HintVisualElement + TextBox -->
<!-- the border will be 'flown out' to act as a balloon -->
<!--lensso修改【原样式定义为IsOpen="True"】-->
<Popup x:Name="TimeHintPopup" IsOpen="False" VerticalOffset="0">
<!--/lensso修改-->
<Border x:Name="TimeHintVisualElement" IsHitTestVisible="True" BorderBrush="Gray" Background="White" Visibility="Collapsed" HorizontalAlignment="Left" BorderThickness="1">
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform />
<TranslateTransform />
</TransformGroup>
</Border.RenderTransform>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" MinWidth="15" />
</Grid.ColumnDefinitions>
<ContentControl Grid.Column="0" IsTabStop="False" IsHitTestVisible="False" Margin="3" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="#FF4A4A4A" FontSize="10" Content="{TemplateBinding TimeHintContent}" />
<ContentControl x:Name="emptyicon" IsTabStop="False" IsHitTestVisible="False" Margin="3" Visibility="Collapsed" Grid.Column="1" />
<ContentControl x:Name="validicon" IsHitTestVisible="False" IsTabStop="False" Margin="3" Visibility="Collapsed" Grid.Column="1" />
<ContentControl x:Name="invalidicon" IsTabStop="False" IsHitTestVisible="False" Visibility="Collapsed" VerticalAlignment="Center" Grid.Column="1">
<Grid VerticalAlignment="Bottom" Width="10" Height="13">
<Path Stretch="Fill" Data="F1 M 28.1143,29.4857L 28.1143,27.4286L 20.7612,13.0286L 19.3898,13.0286L 12.3429,27.4286L 12.3429,29.4857L 28.1143,29.4857 Z " StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeLineJoin="Bevel" Height="11.833" HorizontalAlignment="Stretch" VerticalAlignment="Top">
<Path.Stroke>
<LinearGradientBrush StartPoint="1.10074,0.462591" EndPoint="-0.102151,0.462591">
<GradientStop Color="#F6CAA709" Offset="0.0436364" />
<GradientStop Color="#F3F7F34F" Offset="0.149091" />
<GradientStop Color="#E7CAA709" Offset="0.825455" />
<GradientStop Color="#E7967C07" Offset="0.967124" />
<GradientStop Color="#E7625106" Offset="0.967273" />
</LinearGradientBrush>
</Path.Stroke>
<Path.Fill>
<LinearGradientBrush StartPoint="1.13883,0.460318" EndPoint="-0.140331,0.460318">
<GradientStop Color="#FFF7F79F" Offset="0.123636" />
<GradientStop Color="#FBFBFB7D" Offset="0.177662" />
<GradientStop Color="#F6FFFF5B" Offset="0.24" />
<GradientStop Color="#E7CAA709" Offset="0.52" />
<GradientStop Color="#9ADABE0C" Offset="0.941376" />
<GradientStop Color="#4DEBD60F" Offset="0.941818" />
<GradientStop Color="#FBF6EC20" Offset="0.956364" />
<GradientStop Color="#FFFFFF2F" Offset="0.963636" />
</LinearGradientBrush>
</Path.Fill>
</Path>
<Path Stretch="Fill" StrokeThickness="0.3" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeLineJoin="Bevel" Stroke="#FF1B1B54" Data="F1 M 18.6937,17.3004L 22.2563,17.3004L 21.1313,23.6937L 19.8563,23.6937L 18.6937,17.3004 Z " Margin="4.25,2.25,3.75,0" Height="4.683" VerticalAlignment="Top">
<Path.Fill>
<LinearGradientBrush StartPoint="-0.400002,0.50126" EndPoint="1.4,0.50126">
<GradientStop Color="#FFF7F79F" Offset="0.123636" />
<GradientStop Color="#FB8F8873" Offset="0.175974" />
<GradientStop Color="#F6271A47" Offset="0.236364" />
<GradientStop Color="#E7271A47" Offset="0.534545" />
<GradientStop Color="#9A89782B" Offset="0.941391" />
<GradientStop Color="#4DEBD60F" Offset="0.941818" />
<GradientStop Color="#FBF6EC20" Offset="0.956364" />
<GradientStop Color="#FFFFFF2F" Offset="0.963636" />
</LinearGradientBrush>
</Path.Fill>
</Path>
<Path Height="3.11" Stretch="Fill" StrokeThickness="0.3" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeLineJoin="Round" Stroke="#FF1C1C50" Data="F1 M 20.225,25.122L 20.725,25.122C 21.2773,25.122 21.725,25.5697 21.725,26.122L 21.725,26.872C 21.725,27.4243 21.2773,27.872 20.725,27.872L 20.225,27.872C 19.6727,27.872 19.225,27.4243 19.225,26.872L 19.225,26.122C 19.225,25.5697 19.6727,25.122 20.225,25.122 Z " Margin="3.833,0,4.167,0.833" VerticalAlignment="Bottom">
<Path.Fill>
<LinearGradientBrush StartPoint="-0.0599991,0.5" EndPoint="1.06,0.5">
<GradientStop Color="#F6271A47" Offset="0.236364" />
<GradientStop Color="#E7271A47" Offset="0.534545" />
<GradientStop Color="#9A89782B" Offset="0.98135" />
<GradientStop Color="#4DEBD60F" Offset="0.981818" />
</LinearGradientBrush>
</Path.Fill>
</Path>
</Grid>
</ContentControl>
</Grid>
</Border>
</Popup>
<inputToolkit:ButtonSpinner x:Name="Spinner" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Style="{TemplateBinding SpinnerStyle}" MinWidth="35" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" IsTabStop="False">
<TextBox x:Name="Text" BorderThickness="0" FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}" FontStretch="{TemplateBinding FontStretch}" FontStyle="{TemplateBinding FontStyle}" FontWeight="{TemplateBinding FontWeight}" Foreground="{TemplateBinding Foreground}" MinWidth="20" AcceptsReturn="False" Text="{TemplateBinding Value}" TextAlignment="Right" TextWrapping="NoWrap">
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<ScrollViewer x:Name="ContentElement" Padding="0" BorderThickness="0" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TextBox.Style>
</TextBox>
</inputToolkit:ButtonSpinner>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--lensso修改--><!--/lensso修改-->之间的部分是我做过修改的部分。
完成以上style重写以后在添加timeupdown时将它的style设成重写的style,如下:
<inputToolkit:TimeUpDown Height="25" Width="20" Style="{StaticResource TimePicker_IsPopupFalse}"/>
完成以上所有工作后在childwindow中打开的页面就可以正常使用timeupdown控件了。