我有一个带网格的窗口。
在此我有一些按钮,其中一个按钮点击后会创建一个新的'PostIt',这是我创建的用户控件。
我想要做的是点击'PostIt'并将控制权放在所有其他人之上。
我试过......
Grid.SetZIndex(sender, value);
这似乎是正确的代码,没有错误,只是没有控制的移动:(
问题可能在于click的代码在用户控件而不是mainwindow cs文件中。这有关系吗?
'PostIt'只是一个带有文本框的边框。
答案 0 :(得分:1)
您是在PostIt鼠标单击的处理程序中调用Grid.SetZIndex(sender,value),还是在PostIt中调用控件的处理程序?你设定的价值是多少?
这是一个有效的例子:
<UserControl x:Class="WpfApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" MouseUp="UserControl_MouseUp">
<Grid>
</Grid>
</UserControl>
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
private void UserControl_MouseUp(object sender, MouseButtonEventArgs e)
{
Panel.SetZIndex(this, Panel.GetZIndex(this) + 2);
}
}
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<local:UserControl1 Background="Green" Margin="40,40,100,100" Panel.ZIndex="0" />
<local:UserControl1 Background="Red" Margin="140,140,10,10" Panel.ZIndex="1" />
</Grid>
</Window>
Jogy
答案 1 :(得分:0)
这可能不是最好的解决方案,但它对我有用;我正在重新订购两个网格:
GridOnBottom.SetValue(Grid.ZIndexProperty, (int)GridOnTop.GetValue(Grid.ZIndexProperty) + 1);
...将GridOnBottom和GridOnTop重命名为您要重新排序的对象的实例。当然,这不是最好的解决方案,但它确实有效。