相关疑难解决方法(0)

如何在其锚元素移动时移动WPF Popup?

我有一个像这样定义的Popup:

<Popup
    Name="myPopup"
    StaysOpen="True"
    Placement="Bottom"
    PlacementRectangle="0,20,0,20"
    PlacementTarget="{Binding ElementName=myPopupAnchor}">
    <TextBlock ... />
</Popup>
Run Code Online (Sandbox Code Playgroud)

我已经myPopupAnchor为事件MouseEnter和元素添加了事件处理程序MouseLeave.两个事件处理程序切换弹出窗口的可见性.

我的问题是myPopupAnchor的位置只在首次显示弹出窗口时被读取,或者被隐藏然后再次显示.如果锚移动,则弹出窗口不会移动.

我正在寻找解决这个问题的方法,我想要一个动人的Popup.我可以通知WPF PlacementTarget绑定已更改并应再次读取吗?我可以手动设置弹出窗口的位置吗?

目前,我有一个非常粗略的解决方法,涉及关闭然后再次打开弹出窗口,这会导致一些重新绘制问题.

wpf binding popup

45
推荐指数
5
解决办法
5万
查看次数

如何在WPF中获得顶级对象(窗口或页面)?

在我的自定义WPF控件中,我想获得一个包含Window或Page.当控件在窗口化的应用程序中时,Window.GetWindow()方法工作正常但是当它在浏览器中的XBAP应用程序中时,它返回浏览器窗口而不是页面.

有没有其他方法可以做到这一点?

wpf wpf-controls

30
推荐指数
3
解决办法
4万
查看次数

获取父用户控件WPF C#的名称

我可以访问用户控件A.我想获得有关用户控件C的信息.有没有办法在WPF中执行此操作?结构基本上就是你所看到的.用户控件D是功能区,C是功能区上的选项卡,B和A是C的内容.我似乎无法访问C.我尝试使用A的Parent属性但它似乎没有给出我关于C.的信息

在此输入图像描述

c# wpf user-controls

20
推荐指数
1
解决办法
2万
查看次数

WPF用户控件的DataContext为空

我有一个用户控件,其中控件的XAML可以绑定到父正常的数据上下文中的相应属性(数据上下文在xaml中传播).

例如,我有一个窗口,其DataContext我将设置为ObjectA.然后我在窗口中的用户控件尝试访问dataContext中的属性

所以我的窗口的xaml和后面的代码都可以看到非null的DataContext.

我对DataContext传播的控件可以在Xaml中看到非null的DataContext,但在后面的代码中却看不到.

处理这个问题的正确方法是什么?

wpf wpf-controls

18
推荐指数
3
解决办法
2万
查看次数

按类型查找控件的祖先

UserControl在另一个中有一个“子项” UserControl(它充当 a 中的 TabItem TabControl)。在子项UserControl和 TabItem 祖先之间是许多其他控件(例如:Grids、 a StackPanel,可能是 aScrollViewer等)。

UserControl我想访问我的孩子中TabItem 的属性UserControl,并自定义一个通常 建议的递归函数,该函数沿着可视化树向上移动。但是,这总是在第一次空检查时返回true,直到我在逻辑树上添加查询。

代码:

public MyTabItem FindParentTabItem(DependencyObject child)
{
  DependencyObject parent = VisualTreeHelper.GetParent(child) ?? LogicalTreeHelper.GetParent(child);

  // are we at the top of the tree
  if (parent == null)
  {
      return null;
  }
  MyTabItem parentTabItem = parent as MyTabItem;
  if (parentTabItem != null)
  {
    return parentTabItem;
  }
  else
  {
    //use recursion until …
Run Code Online (Sandbox Code Playgroud)

c# wpf visualtreehelper

1
推荐指数
1
解决办法
2315
查看次数