none
WPF Popup.IsOpen - не работает RRS feed

  • Общие обсуждения

  • Всем доброго времени суток. 

    У меня вопрос следующего характера: не работает Popup.IsOpen. 

    <Style x:Key="DateTimeTextBox" BasedOn="{x:Null}" TargetType="{x:Type TextBox}">
    		<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
    		<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" />
    		<Setter Property="BorderBrush" Value="{StaticResource TextBoxBorder}" />
    		<Setter Property="BorderThickness" Value="1" />
    		<Setter Property="Padding" Value="1" />
    		<Setter Property="AllowDrop" Value="true" />
    		<Setter Property="FocusVisualStyle" Value="{x:Null}" />
    		<Setter Property="Template">
    			<Setter.Value>
    				<ControlTemplate TargetType="{x:Type TextBox}">
    					<themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}"
    					                      BorderThickness="{TemplateBinding BorderThickness}"
    					                      Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}"
    					                      RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true">
    						<Grid>
    							<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
    							<Popup x:Name="CustomPopup" 
                                       Margin="-5 0 0 0"
                                       AllowsTransparency="True"
                                       IsOpen="True"
    							       PopupAnimation="Fade"
                                       PlacementTarget="{Binding ElementName=PART_ContentHost}">
    								<Calendar x:Name="CalDisplay"
    								          SelectedDate="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Text, Mode=TwoWay, Converter={StaticResource CalendarConverter}}"
    								          Focusable="False"
    								          DisplayDate="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Text, Mode=OneWay, Converter={StaticResource CalendarConverter}}" />
    							</Popup>
    						</Grid>
    					</themes:ListBoxChrome>
    					<ControlTemplate.Triggers>
    						<Trigger Property="IsEnabled" Value="false">
    							<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
    							<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
    						</Trigger>
    					</ControlTemplate.Triggers>
    				</ControlTemplate>
    			</Setter.Value>
    		</Setter>
    	</Style>

    Присваивание значения true свойству IsOpen, не изменяет свойство IsOpen и Popup не открывается.

      private void OpenPopup()
            {
                var element = AssociatedObject.Template.LoadContent() as FrameworkElement;
                if (element != null)
                {
                    var popup = element.FindName("CustomPopup") as Popup;
                    if (popup != null)
                        popup.IsOpen = true;
                }
            }


    15 октября 2014 г. 14:38

Все ответы

  • А вы уверены, что нужная строка вообще выполняется? У вас целых две проверки на null до выполнения этой строки.

    VB.Net - WPF, WinRT, WP

    16 октября 2014 г. 6:56
    Отвечающий
  • А вы уверены, что нужная строка вообще выполняется? У вас целых две проверки на null до выполнения этой строки.

    VB.Net - WPF, WinRT, WP

    Спасибо за ответ.

    Да, я уверен что строка выполняется :)

    16 октября 2014 г. 7:11