0

我很抱歉这个愚蠢的标题,但我的要求与此非常相似。

我有一个从DatePicker. 我没有任何单独的控制结构。我需要将弹出窗口附加到其结构。所以我正在做的是在我的自定义控件的构造函数中,使用放置目标作为我的自定义控件初始化一个新的弹出窗口。

在这里我知道这个弹出窗口不会出现在可视树中。我需要在单击按钮时显示此弹出窗口。

对不起,我的英语不好。希望问题很清楚...

谢谢

4

1 回答 1

0

如果我正确理解您的问题,您希望在单击其他按钮时显示或隐藏自定义控件中定义的弹出窗口。

为此,您可以将依赖属性添加到自定义控件并相应地设置IsOpen属性Popup

下面的示例代码:

public static readonly DependencyProperty IsPopupOpenProperty =
    DependencyProperty.Register("IsPopupOpen", typeof (bool), typeof (CustomDatePicker), new PropertyMetadata(default(bool), PropertyChangedCallback));

public bool IsPopupOpen
{
    get { return (bool) GetValue(IsPopupOpenProperty); }
    set { SetValue(IsPopupOpenProperty, value); }
}

static void PropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
    var datePicker = (CustomDatePicker) dependencyObject;
    datePicker.ShowOrHidePopup();
}

void ShowOrHidePopup()
{
    _popup.IsOpen = IsPopupOpen;
}

IsPopupOpen然后,您可以通过在自定义控件上设置属性来显示/隐藏弹出窗口。因为,IsPopupOpen一个依赖属性,你也可以通过Data Binding.

希望这对您解决问题有所帮助或给您一些想法!

更新

我的 XAML

<StackPanel Orientation="Vertical">
        <Button Click="ButtonBase_OnClick" Content="Click Me!!" Margin="10" />
        <local:CustomDatePicker x:Name="customDatePicker" />
</StackPanel>

我的 XAML.cs

void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
    customDatePicker.IsPopupOpen = !customDatePicker.IsPopupOpen;
}
于 2014-01-28T15:09:09.657 回答