一个普通窗体中有个树,数据源类型是我自己定义的类People
<TreeView x:Name="filterTreeView"> <TreeView.Resources> <DataTemplate DataType="{x:Type local:People}"> <Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown"> <TextBlock Text="{Binding Name}"/> </Grid> </DataTemplate> </TreeView.Resources> </TreeView>
Grid单击事件Grid_MouseLeftButtonDown弹出一个普通窗体,但是弹出窗体没有在当前窗体的前面,请问大家这个问题该怎么解决啊?
请说详细一点,上图,多贴一点代码.
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:control="clr-namespace:WpfApplication1.Controls" xmlns:local="clr-namespace:WpfApplication1" Title="MainWindow" Height="200" Width="300"> <TreeView x:Name="filterTreeView"> <TreeView.Resources> <DataTemplate DataType="{x:Type local:People}"> <Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown"> <TextBlock Text="{Binding Name}"/> </Grid> </DataTemplate> </TreeView.Resources> </TreeView> </Window>
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Window1 win = new Window1();
win.Show();
}
代码就这么简单
好像有个 TopMost 属性可以设置
TopMost是将界面永久性置前,不是我想要的
你应该贴Grid_MouseLeftButtonDown这段代码。不知道你这个是不是模态状态。
win.ShowDialog();
这样的话,只有当弹出窗体关闭后,主窗体才能操作
设置弹出窗口获得焦点
获取焦点也不可以,你可以试试
找到问题原因了,因为Grid的MouseLeftButtonDown的事件弹出窗体之后,还会触发主窗体TreeView的SelectedItemChanged事件,所以在TreeView的SelectedItemChanged事件里弹出就可以了