我很抱歉这个愚蠢的标题,但我的要求与此非常相似。
我有一个从DatePicker
. 我没有任何单独的控制结构。我需要将弹出窗口附加到其结构。所以我正在做的是在我的自定义控件的构造函数中,使用放置目标作为我的自定义控件初始化一个新的弹出窗口。
在这里我知道这个弹出窗口不会出现在可视树中。我需要在单击按钮时显示此弹出窗口。
对不起,我的英语不好。希望问题很清楚...
谢谢
我很抱歉这个愚蠢的标题,但我的要求与此非常相似。
我有一个从DatePicker
. 我没有任何单独的控制结构。我需要将弹出窗口附加到其结构。所以我正在做的是在我的自定义控件的构造函数中,使用放置目标作为我的自定义控件初始化一个新的弹出窗口。
在这里我知道这个弹出窗口不会出现在可视树中。我需要在单击按钮时显示此弹出窗口。
对不起,我的英语不好。希望问题很清楚...
谢谢
如果我正确理解您的问题,您希望在单击其他按钮时显示或隐藏自定义控件中定义的弹出窗口。
为此,您可以将依赖属性添加到自定义控件并相应地设置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;
}