C# WPF中的弹出窗口未打开
我有一个修改了列标题的datagrid,其中包含一个按钮,可以打开一个弹出窗口。 这是以代码隐藏方式编写的,因为不同的数据源具有不同的列数 这就是它看起来的样子: 弹出窗口存储在:C# WPF中的弹出窗口未打开,c#,wpf,C#,Wpf,我有一个修改了列标题的datagrid,其中包含一个按钮,可以打开一个弹出窗口。 这是以代码隐藏方式编写的,因为不同的数据源具有不同的列数 这就是它看起来的样子: 弹出窗口存储在: Dictionary<string, Popup> HeaderPopups = new Dictionary<string, Popup>(); 因此,对于每一列,都会生成一个弹出窗口,我的HeaderPopups字典中有带有键Spec_No、Grade和Class的弹出窗口 我希望相应的
Dictionary<string, Popup> HeaderPopups = new Dictionary<string, Popup>();
因此,对于每一列,都会生成一个弹出窗口,我的HeaderPopups字典中有带有键Spec_No、Grade和Class的弹出窗口
我希望相应的弹出窗口显示在单击的按钮下方,如中的示例所示
看这里:
我的问题是在HeaderFilterButtonClick事件中打开这些弹出窗口。我试了一下:
private void HeaderFilterButtonClick(object sender, RoutedEventArgs e)
{
Button b = sender as Button;
txtTest.Text += e.OriginalSource.ToString() + Environment.NewLine;
txtTest.Text += e.Source.ToString() + Environment.NewLine;
txtTest.Text += b.Name;
if (b.Name == "btn_Spec_No")
{
HeaderPopups["Spec_No"].IsOpen = true;
}
}
但它不起作用
有人能帮忙吗?您的弹出窗口当前为空,因此完全不可见
应将其子属性设置为边框,并将边框的子属性设置为要渲染的内容:
Popup pop = new Popup() { ... };
Border bord = new Border() { Background = Brushes.White, BorderBrush = Brushes.Gray, BorderThickness = new Thickness(1, 1, 1, 1) };
bord.Child = new TextBlock() { Text = "some content..." };
pop.Child = bord;
您的弹出窗口当前为空,因此完全不可见
应将其子属性设置为边框,并将边框的子属性设置为要渲染的内容:
Popup pop = new Popup() { ... };
Border bord = new Border() { Background = Brushes.White, BorderBrush = Brushes.Gray, BorderThickness = new Thickness(1, 1, 1, 1) };
bord.Child = new TextBlock() { Text = "some content..." };
pop.Child = bord;
弹出窗口正在打开和渲染,但它是空的,因此无法看到 问题就在这里
Border bord = new Border() { Background = Brushes.White, BorderBrush = Brushes.Gray, BorderThickness = new Thickness(1,1,1,1) };
pop.DataContext = bord;
Datacontext用于设置绑定目标,空弹出窗口没有绑定
您需要通过将上面的更改为来填充子对象
Border bord = new Border() { Background = Brushes.White, BorderBrush = Brushes.Gray, BorderThickness = new Thickness(1,1,1,1) };
pop.Child = bord;
这会将弹出式容器的根设置为另一个Border对象。
您还必须对堆栈面板和边框执行相同的操作
StackPanel stack = new StackPanel() { Margin = new Thickness(5, 5, 5, 15) };
bord.Child = stack;
弹出窗口正在打开和渲染,但它是空的,因此无法看到 问题就在这里
Border bord = new Border() { Background = Brushes.White, BorderBrush = Brushes.Gray, BorderThickness = new Thickness(1,1,1,1) };
pop.DataContext = bord;
Datacontext用于设置绑定目标,空弹出窗口没有绑定
您需要通过将上面的更改为来填充子对象
Border bord = new Border() { Background = Brushes.White, BorderBrush = Brushes.Gray, BorderThickness = new Thickness(1,1,1,1) };
pop.Child = bord;
这会将弹出式容器的根设置为另一个Border对象。
您还必须对堆栈面板和边框执行相同的操作
StackPanel stack = new StackPanel() { Margin = new Thickness(5, 5, 5, 15) };
bord.Child = stack;
您将在事件处理程序中创建的弹出窗口存储在何处。。。?你希望在哪里找到它?谢谢你的回答,谢谢你愚蠢的问题。刚刚编辑了标题和正文。现在我在弹出窗口中使用了字典,但新的问题是,它们没有打开:/Where do you want it show up?(您希望它显示在哪里?)在单击的按钮下,请参见编辑的帖子您误用了DataContext。当您想要分配Childcontrols时,通常使用Content或Children在事件处理程序中创建的弹出窗口存储在哪里。。。?你希望在哪里找到它?谢谢你的回答,谢谢你愚蠢的问题。刚刚编辑了标题和正文。现在我在弹出窗口中使用了字典,但新的问题是,它们没有打开:/Where do you want it show up?(您希望它显示在哪里?)在单击的按钮下,请参见编辑的帖子您误用了DataContext。当您想要分配子控件时,通常使用内容或子控件