WPF Изменить сетку и прозрачность границы сетки, не влияя на детей - PullRequest
7 голосов
/ 29 декабря 2011

У меня есть сетка, которую я хочу сделать непрозрачностью 0,5.у меня также есть граница для этой сетки, чтобы она была закруглена, и я хочу, чтобы эта граница также имела непрозрачность 0,5.Я хочу все это без влияния на содержание сетки.мне удалось изменить непрозрачность сетки без влияния на содержимое:

        <Grid  Grid.Column="0"  Grid.Row="0" Margin="10,15,5,5" >
        <Border BorderThickness="7" CornerRadius="4" >
            <Grid>
                <Grid.Background>
                    <SolidColorBrush Color="#73B2F5" Opacity="0.5"/>
                </Grid.Background>
                <Grid.RowDefinitions>
                    <RowDefinition Height="30"/>
                    <RowDefinition Height="1*"/>
                </Grid.RowDefinitions>
                <Button Grid.Row="1" Grid.Column="0" Width="40" Height="40" Content="Asaf"></Button>

            </Grid>
        </Border>
    </Grid>

в приведенном выше примере кнопка имеет полную непрозрачность, а сетка равна 0,5, но как насчет границы?Как сделать так, чтобы граница имела непрозрачность 0,5, не влияя на сетку внутри нее и содержимое сетки (все дочерние элементы границы)?

Я пробовал это, но это не работает:

        <Grid  Grid.Column="0"  Grid.Row="0" Margin="10,15,5,5" >
        <Border BorderThickness="7" CornerRadius="4">
            <Border.Background>
                <SolidColorBrush Color="#73B2F5" Opacity="0.5"/>
            </Border.Background>
            <Grid>
                <Grid.Background>
                    <SolidColorBrush Color="#73B2F5" Opacity="0.5"/>
                </Grid.Background>
                <Grid.RowDefinitions>
                    <RowDefinition Height="30"/>
                    <RowDefinition Height="1*"/>
                </Grid.RowDefinitions>
                <Button Grid.Row="1" Grid.Column="0" Width="40" Height="40" Content="Asaf"></Button>

            </Grid>
        </Border>
    </Grid>

Ответы [ 2 ]

14 голосов
/ 29 декабря 2011

Просто установите свойство BorderBrush (а не свойство фона) границы:

<Border.BorderBrush>
   <SolidColorBrush Color="#000000" Opacity="0.5"/>
</Border.BorderBrush>

В вашем примере это будет выглядеть так:

<Grid  Grid.Column="0"  Grid.Row="0" Margin="10,15,5,5" >
    <Border BorderThickness="7" CornerRadius="4">
        <Border.BorderBrush>
           <SolidColorBrush Color="#000000" Opacity="0.5"/>
        </Border.BorderBrush>
        <Grid>
            <Grid.Background>
                <SolidColorBrush Color="#73B2F5" Opacity="0.5"/>
            </Grid.Background>
            <Grid.RowDefinitions>
                <RowDefinition Height="30"/>
                <RowDefinition Height="1*"/>
            </Grid.RowDefinitions>
            <Button Grid.Row="1" Grid.Column="0" Width="40" Height="40" Content="Asaf"></Button>

        </Grid>
    </Border>
</Grid>
0 голосов
/ 05 июля 2016

Для тех, кто хочет изменить границу / непрозрачность линий сетки в пределах DataGrid, можно просто установить непрозрачный цвет в ресурсах:

 <Window.Resources>
     <SolidColorBrush x:Key="StackOverflowGray" Color="LightGray" Opacity=".3" />
 </Window.Resources>

...

Тогдау следующих применений будет более светлая граница ячейки, показанная в таблице данных:

<DataGrid GridLinesVisibility="All"
          HorizontalGridLinesBrush="{StaticResource StackOverflowGray}"
          VerticalGridLinesBrush="{StaticResource StackOverflowGray}"
...