获取父控件的办法?

litgle 2010-05-09 10:21:57
我在wpf里想封装popup,因为想让popup弹出时,原window或page禁用,所以我想在封装的popup类里设置父window或page的IsEnable 属性为 false.

现在我只想到用传递父window或page到popup类的办法来处理这个问题,但是我还在想能不能通过反射或者其它什么方法来获取父控件呢?

欢迎各位指点.
...全文
186 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyu520hong 2010-05-10
  • 打赏
  • 举报
回复
你可以用属性封装.
litgle 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liuyu520hong 的回复:]
你可以用属性封装.
[/Quote]
使用属性封装的话,还是要在调用处显示是把父控件赋值给popup类,而我想让popup自动获取。
litgle 2010-05-09
  • 打赏
  • 举报
回复
我下面给出一个例子吧

建立一个xbap项目,叫WpfBrowserApplication1,自动创建的page1.xaml里只包含一个按钮.

namespace WpfBrowserApplication1
{
/// <summary>
/// Interaction logic for Page1.xaml
/// </summary>
public partial class Page1 : Page
{
public Page1()
{
InitializeComponent();
}

private void button1_Click(object sender, RoutedEventArgs e)
{
MessagePopup.Show(this,"hello");
}
}
}


封装的popup类

namespace WpfBrowserApplication1
{
public sealed class MessagePopup
{
public static void Show(UIElement parent, string message)
{
Popup window = new Popup();

StackPanel sp = new StackPanel { Margin = new Thickness(5) };
sp.Children.Add(new TextBlock { Text = message });
Button newButton = new Button { Content = window.Parent.ToString() };
newButton.Click += delegate { window.IsOpen = false; parent.IsEnabled = true; };
sp.Children.Add(newButton);
sp.Children.Add(new Slider { Minimum = 0, Maximum = 50, Value = 25, Width = 100 });

window.Child = new Border
{
Background = Brushes.White,
BorderBrush = Brushes.Black,
BorderThickness = new Thickness(2),
Child = sp
};
window.PlacementTarget = parent;
window.Placement = PlacementMode.Center;

window.IsOpen = true;
parent.IsEnabled = false;
}
}
}


在上面的例子里,当popup弹出时,为了不影响popup,我禁用了parent这个父控件,但它是由show()方法传递过来的,而我在尝试是否可以不传递这个对象,而改由在show()方法里获取.
whatismynickname 2010-05-09
  • 打赏
  • 举报
回复
看不懂。。。
yzanm 2010-05-09
  • 打赏
  • 举报
回复
你说的是上一级控件吗,没看明白你到底要的是什么?

如果是,我想你可能说的是 **.parentNode 吧
yzanm 2010-05-09
  • 打赏
  • 举报
回复
你说的是上一级空控件吗没看明白你到底要的是什么?

如果是,我想尼克能说的是 **.parentNode 吧

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧