好的,所以我试图在 gridviewitems 获得焦点时在它们中创建一个弹出效果。以下是这样做的代码。
private async void Container_GotFocus(object sender, RoutedEventArgs e)
{
var panel = (sender as FrameworkElement)?.FindDescendant<DropShadowPanel>();
if (panel != null)
{
var parent = panel?.Parent as UIElement;
if (parent != null)
{
Canvas.SetZIndex(parent, 10);
var parentAnimation = new ScaleAnimation() { To = "1.2", Duration = TimeSpan.FromMilliseconds(600) };
parentAnimation.StartAnimation(parent);
var parentAnimation2 = new ScaleAnimation() { To = "1.2", Duration = TimeSpan.FromMilliseconds(600) };
parentAnimation2.StartAnimation(panel);
}
}
}
如您所见,我正在使用Uwp 社区工具包来缩放项目。我在失去焦点事件时将它们缩小到 1,这两个都工作得很好。并且我试图防止 1 侧与焦点项目的设置Z 索引重叠。
问题
正如您在下图中看到的,焦点项目的左侧是完美的并且在左侧元素上方,但在右侧,它看起来很奇怪,因为它的右边缘低于右侧的项目,这是我的主要担心,因为它应该看起来像左边缘并且高于所有其他项目。
我认为这里不需要这种情况下的数据模板,因此我将其省略。我只需要以某种方式管理缩放项目的 zindex,以便在缩放时它可以高于其他所有人。
编辑 我的问题与任何其他问题都不重复,因为我正在尝试设置 zindex,但它不适用于我的情况。
更新 1
好的,所以现在我正在尝试缩放容器,但现在我将面板设置为空。
var panel = (sender as FrameworkElement)?.Parent as UIElement;
if (panel != null)
{
//var parent = ((panel?.Parent as FrameworkElement)?.Parent) as UIElement;
//if (parent != null)
// {
Canvas.SetZIndex(panel, 1);
//var parentAnimation = new ScaleAnimation() { To = "1.2", Duration = TimeSpan.FromMilliseconds(600) };
//parentAnimation.StartAnimation(parent);
var parentAnimation2 = new ScaleAnimation() { To = "1.2", Duration = TimeSpan.FromMilliseconds(600) };
parentAnimation2.StartAnimation(panel);
// }
}