DropShadowEffect应用于子元素-Silverlight XAML
我有一个ItemsControl,它包含一些嵌套的容器。我想在主ItemsControl的每个元素周围添加一个dropshadow。而是将其添加到主ItemsControl中的某些容器中(创建阴影行)。我已经把效果放在了许多不同的层面上,但它没有带来任何变化。我从主ItemsControl中项目的最外层容器开始,然后从那里向上移动 这里是我当前放置的放置阴影效果的位置:DropShadowEffect应用于子元素-Silverlight XAML,silverlight,xaml,dropshadow,Silverlight,Xaml,Dropshadow,我有一个ItemsControl,它包含一些嵌套的容器。我想在主ItemsControl的每个元素周围添加一个dropshadow。而是将其添加到主ItemsControl中的某些容器中(创建阴影行)。我已经把效果放在了许多不同的层面上,但它没有带来任何变化。我从主ItemsControl中项目的最外层容器开始,然后从那里向上移动 这里是我当前放置的放置阴影效果的位置: <ItemsControl > <ItemsControl.ItemsPanel>
<ItemsControl >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<!-- I have tried adding the dropshadow effect within this stackpanel -->
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!-- Where I define the dropshadow -->
<ItemsControl.Effect>
<DropShadowEffect BlurRadius="0" ShadowDepth="1" Color="LightGray"/>
</ItemsControl.Effect>
<!-- End of dropshadow definition -->
<ItemsControl.ItemTemplate>
<DataTemplate>
<media:Step5Item />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这是Step5Item的定义,我添加了阴影出现位置的文档:(编辑)我删除了元素的内容,因为那只是样式等等
<!-- This is inserted by the above code's DataTemplate -->
<!-- I have tried adding a border here and giving it a dropshadow effect -->
<Grid >
<!-- I have tried inserting a dropshadow effect here -->
<TextBlock Grid.Row="0"/>
<Border BorderBrush="LightGray" BorderThickness="1" >
<!-- I have tried inserting a dropshadow effect here -->
<Grid>
<Border >
<!-- There is a shadow around this border/grid -->
<Grid Grid.Row="0" >
<TextBlock Grid.Column="0" />
<Button Grid.Column="2"/>
</Grid>
</Border>
<!--There is a shadow around each element in this ItemsControl-->
<ItemsControl Grid.Row="2" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,4" >
<Path Grid.Row="0">
<Path.Data>
<LineGeometry StartPoint="0,0" EndPoint="1500,0"/>
</Path.Data>
</Path>
<Grid Grid.Row="1">
<Image Grid.Column="0" />
</Grid>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Border>
</Grid>
底部还有一个阴影,但我不知道它是来自ItemsControl中的最后一个元素,还是来自最外层的边框
如果您愿意,我可以进一步清理第二个代码段。我拿出了一些东西,但留在了元素中,我想这可能对可读性最好
编辑
我尝试在添加子元素后应用该效果,希望在效果发挥作用之前创建它们,这样问题就不会发生。我尝试将效果放置在主项控件的底部以及Step5Item中最外层网格的底部。我还删除了Step5Item中的一些内容,希望它更可读
EDIT2
这里有两张有效果和没有效果的图片。我把DropShadow代码放在了上面的位置,尽管正如我所说,我可以将它放在许多地方以获得相同的效果
带阴影
无阴影
编辑3
这是我在Erno的解决方案中使用的边框和阴影效果。我希望能够增加一些阴影深度,因为右侧没有阴影,只有底部。当前,如果我更改阴影深度,它将更改为阴影的位置,距离等于新大小,但厚度仅为1
<Border Margin="0,1,0,0" Height="auto" Width="auto" CornerRadius="5,5,5,5" BorderThickness="1" BorderBrush="LightGray">
<Border.Effect>
<DropShadowEffect BlurRadius="0" ShadowDepth="1" Direction="315" Color="LightGray"/>
</Border.Effect>
</Border>
您是否尝试过执行以下操作 我添加了另一个网格,并添加了一个具有相同效果的同级边框。包含行的网格显示在其顶部,但不是边框的子控件
<ItemsControl Grid.Row="2" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,4" >
<Grid>
<Border>
<Border.Effect>
<DropShadow />
</Border.Effect>
</Border>
<Path Grid.Row="0">
<Path.Data>
<LineGeometry StartPoint="0,0" EndPoint="1500,0"/>
</Path.Data>
</Path>
<Grid Grid.Row="1">
<Image Grid.Column="0" />
</Grid>
</Grid>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
你能发布一些屏幕截图来澄清问题吗?我还不明白问题所在。你能把代码精简一下吗?@Erno我拿了把斧头。差不多只剩下几个集装箱了。要了解问题所在,请查看图像中的水平线。我试图得到一个只有两个容器外部有阴影的效果。取而代之的是,这两个容器中的每一行都有一个边框。我还在代码中添加了注释,在那里我尝试添加了dropshadow效果(所有的效果与我看到的完全相同)。经过大量的修改,我最终想到了大部分都可以工作。我把它放在其他地方(您的解决方案让它在每个ItemControl对象上重复,我希望它围绕整个对象)。但出于某种原因,当我通过shadowDepth增加dropshadow的大小,而不是得到3、4、9等大小的实体阴影时。我得到一个大小为1的阴影,但距离很远,表明我输入的数字被使用了。我正在用我正在使用的代码更新问题的底部,如果您有任何见解,请告诉我。@StephenT,您可以给Border和Grid兄弟姐妹更大的余量。这会给阴影更多的空间,还是我不明白新问题是什么?@Stephen,明白了,边框缺少背景色。没有背景=>没有阴影。啊,好吧,这解释了我看到的一些行为(这是一条直线的实际阴影,我认为它们的效果并不是那么字面)。重叠对象的宽度似乎仍然比边框宽一点,但当我调整边距时,一个边距会调整到另一个边距。我想我只是要添加第二个边框来获得我想要的效果。我花了2个小时给一件事加上阴影,也许是时候在其他方面多做点努力了。谢谢你的帮助,这让我发疯了。