带有DatePicker控件焦点/事件问题的WPF弹出窗口

时间:2017-02-03 20:17:13

标签: c# wpf xaml datepicker popup

我的xaml视图中有一个WPF Togglebutton和Popup控件,它们的设置如下:

<ToggleButton Name="ViewMessageHistoryFilterOptionsButton"
              Style="{StaticResource ViewOptionsButtonStyle}"
              Content="View Options"
              Margin="6,4,0,4"
              Height="24"
              IsChecked="{Binding IsFilterOptionsMenuOpen}"

              />
<Popup Name="ViewMessageHistoryFilterOptionsPopup" 
       IsOpen="{Binding IsChecked, ElementName=ViewMessageHistoryFilterOptionsButton}" 
       PlacementTarget="{Binding ElementName=ViewMessageHistoryFilterOptionsButton}"
       Placement="Left"
       HorizontalOffset="{Binding ActualWidth, ElementName=ViewMessageHistoryFilterOptionsButton}"
       VerticalOffset="{Binding ActualHeight, ElementName=ViewMessageHistoryFilterOptionsButton}"
       StaysOpen="False"
       >
    <Border BorderThickness="1"
            BorderBrush="#333333">
        <Border.Effect>
            <DropShadowEffect BlurRadius="3" Opacity="0.75"/>
        </Border.Effect>
        <local:MessageHistoryAdvancedFilterView DataContext="{Binding AdvancedFilterVM}" />
    </Border>
</Popup>    

MessageHistoryAdvancedFilterView就像一个声音,一个自定义视图。此视图中包含其他各种xaml对象,最明显的是DatePicker。日期选择器在他们的设置中非常香草:

<DatePicker x:Name="StartDatePicker"
    Grid.Row="0"
    SelectedDate="{Binding FilterDateStart, UpdateSourceTrigger=LostFocus}" 
    SelectedDateFormat="Short" 
    Width="28" 
    HorizontalAlignment="Right" 
    VerticalAlignment="Center" 
    BorderThickness="0" 
    Focusable="False" 
    Margin="0,0,1,0"/>

我遇到的问题是,日期选择器上日期选择的弹出窗口显示在弹出窗口的边界之外( 和主要的wpf应用程序 ),所以当我选择一个日期(当前代码粘贴在这里)弹出窗口关闭。

我已尝试使用StaysOpen="True",而且&#34;有效&#34;它带来了一个小问题。如果我执行以下操作:

  1. 点击ToggleButton(打开PopUp
  2. 打开DatePicker,就像我要选择日期一样
  3. 那么点击进入单独的程序(如Notepad ++,VS等)
  4. 我可以 从不 重点关注DatePicker(IE,它永远不会更新所选日期),除非我点击ToggleButton来关闭PopUp并重新打开它。

    有没有解决方法/修复它?

    我还尝试手动处理为视图中的弹出窗口,本地视图,日期选择器设置的焦点,但是还没有产生所需的结果。

0 个答案:

没有答案