ColorZone не отбрасывает тень в WPF MaterialDesign

#c# #wpf #material-design #material-design-in-xaml

#c# #wpf #material-design #material-design-in-xaml

Вопрос:

Я пытаюсь сделать ColorZone в WPF, используя библиотеку MaterialDesign. Но когда я устанавливаю

 materialDesign:ShadowAssist.ShadowDepth="Depth5"
  

он не показывает никакой тени. Ниже приведен полный код примера приложения, в котором он не работает. Кто-нибудь может сказать мне, что я делаю не так?

  1. Я добавил MaterialDesignThemes в проект.

  2. В app.xaml вставке это:

 <Application
    x:Class="TestShadow.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:TestShadow"
    xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
    StartupUri="MainWindow.xaml">

    <Application.Resources>
        <ResourceDictionary>
            
            <ResourceDictionary.MergedDictionaries>
                <materialDesign:BundledTheme
                    BaseTheme="Light"
                    PrimaryColor="DeepPurple"
                    SecondaryColor="Lime" />
                <ResourceDictionary
                    Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
            </ResourceDictionary.MergedDictionaries>
            
        </ResourceDictionary>
    </Application.Resources>
</Application>
  
  1. И MainWindow.xaml я добавил:
 <Window
    x:Class="TestShadow.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:TestShadow"
    xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
    mc:Ignorable="d"
    Title="MainWindow"
    Height="450"
    Width="800">

    <Grid>

        <materialDesign:ColorZone
            Mode="PrimaryDark"
            Padding="16"
            materialDesign:ShadowAssist.ShadowDepth="Depth5">

            <TextBlock
                Text="Material Design In XAML Toolkit"
                VerticalAlignment="Center" />

        </materialDesign:ColorZone>

    </Grid>
    
</Window>
  

Результат, тени нет:

Результат

Комментарии:

1. Какую версию Material Design вы используете?

2. Темы MaterialDesign — 3.2.0 . MaterialDesignColors — 1.2.7

3. Тень находится за пределами цветовой зоны, поэтому вы можете попытаться добавить поле в цветовую зону, чтобы проверить, не скрыто ли оно другим содержимым. Margin =»5″ должно быть достаточно. Если это сработает, попробуйте поместить цветовую зону на первый план, чтобы убедиться, что тень находится над другим содержимым

4. @XimazeC Я добавил поле, но я все еще не вижу никакой тени. Единственный способ, который я нашел для этого, — использовать Card и установить Radius в 0

5. У меня также возникла эта проблема, она работает в предыдущем проекте, но сейчас ее нет.

Ответ №1:

По-видимому, есть какая-то проблема для текущей версии MaterialDesign. Единственный способ, который я нашел, это поместить элемент Card под ColorZone. В этом случае тень становится видимой.