首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF DropShadow消失

WPF DropShadow消失
EN

Stack Overflow用户
提问于 2010-02-22 23:02:36
回答 1查看 2.3K关注 0票数 2

Wpf阴影消失。这里是如何繁殖。

在xaml衬垫中键入以下内容。

代码语言:javascript
复制
<Page.Resources>
    <DropShadowEffect x:Key="shadow"
        Opacity="1"
        ShadowDepth="1"
        Color="Blue"
        BlurRadius="30"/>
</Page.Resources>
<Grid>
    <Button  HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,0,0,0">
        <Button.Style>
            <Style TargetType="{x:Type Button}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                            <Border x:Name="Bd"
                                    BorderBrush="Black" BorderThickness="1"
                                    Background="Yellow"
                                    CornerRadius="8"
                                    Effect="{StaticResource shadow}">
                                <TextBlock Text="Hello out there"  HorizontalAlignment="Center" VerticalAlignment="Center"  />
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Button.Style>
    </Button>
</Grid>

你应该会看到一些边框丰富的文本,以及边框周围的阴影。

现在,将Margin="0,0,0,0"更改为Margin="0,300,0,0",,并调整xaml衬垫窗口的大小,以便您可以看到边框。在我的机器上,掉下的阴影现在消失了。

还有人看到这个吗?请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2010-02-23 04:49:31

我希望我对你有一个很好的解释,但是在你的XAML中有一些我玩过的奇怪的东西,我想我有一个解决方案给你。

  1. (如果使用网格),很可能希望列出特定数量的行和列。你应该指定这些。这不影响您的问题,however.
  2. Likewise,您应该为您的元素指定行和列,因为您最终需要将这些信息放在XAML中。从国际海事组织开始是一个好习惯。
  3. 我无法解释的问题是HorizontalAlignment和VerticalAlignment的结合。当您将按钮放到网格中时,我希望按钮占用整个空间,但它没有。我想要做的唯一方法就是指定HeightWidth。如果你这样做,效果就会起作用。我发现原始XML中的阈值是Y的总差值239。例如,如果使用0,239,0,0,它将失败。如果您使用0,139,0,100,它也会失败,因为它的和是239。奇怪的事。

下面是我的XAML,它可以工作:

代码语言:javascript
复制
<Page.Resources>
    <DropShadowEffect x:Key="shadow"
        Opacity="1"
        ShadowDepth="2"
        Color="Blue"
        BlurRadius="30"/>
</Page.Resources>
<Grid Width="Auto" Height="Auto">
  <Grid.RowDefinitions>
    <RowDefinition></RowDefinition>
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition></ColumnDefinition>
  </Grid.ColumnDefinitions>
    <Button Width="90" Height="30" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,300,0,0" Grid.Row="0" Grid.Column="0">
        <Button.Style>
            <Style TargetType="{x:Type Button}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                            <Border x:Name="Bd"
                                    BorderBrush="Black" BorderThickness="1"
                                    Background="Yellow"
                                    CornerRadius="8"
                                    Effect="{StaticResource shadow}">
                                <TextBlock Text="Hello out there"  HorizontalAlignment="Center" VerticalAlignment="Center"  />
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Button.Style>
    </Button>

编辑 OP不想为Button指定大小,因为Button的内容可以动态更改。结果是,如果您将MinHeight设置为18 (我认为这对于大多数内容来说是合理的),那么下垂效果将再次起作用。

代码语言:javascript
复制
<Border x:Name="Bd" BorderBrush="Black" BorderThickness="1" Background="Yellow" CornerRadius="8" Effect="{StaticResource shadow}" MinHeight="18">
  <StackPanel Orientation="Vertical">
    <TextBlock>hi</TextBlock>
    <TextBlock>there</TextBlock>
  </StackPanel>
</Border>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2314957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档