Стиль границы может применяться только один раз - PullRequest
0 голосов
/ 09 ноября 2019

В Сетка, я пытаюсь применить ко всему моему TextBlock Границу со Стилем. У меня нет проблем с кодом XAML, но визуально, когда я применяю свою вторую Границу с тем же стилем вокруг моего TextBlock в сетке (Кол: 0 Строка: 1), этот перемещается в сетке (Кол: 0 Строка: 0).

В моем окне. Ресурсы:

        <Style x:Key="BorderTextBlockStyle" TargetType="{x:Type Border}">
           <Setter Property="BorderThickness" Value="1"/>
           <Setter Property="BorderBrush" Value="Black"/>
           <Setter Property="CornerRadius" Value="5"/>
           <Setter Property="Grid.Column" Value="{Binding}"/>
           <Setter Property="Grid.Row" Value="{Binding}"/>
        </Style>

В моем окне:

<Grid VerticalAlignment="Top">            
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto"/>
            <ColumnDefinition Width="auto"/>
        </Grid.ColumnDefinitions>
            <Border Style="{StaticResource BorderTextBlockStyle}">
                <TextBlock Grid.Column="0" Grid.Row="0" Text="Firstname" Style="{StaticResource GridTitleStyle}"/>
            </Border>
            <Border Style="{StaticResource BorderTextBlockStyle}">
                <TextBlock Grid.Column="1" Grid.Row="0" Text="Lastname" Style="{StaticResource GridTitleStyle}"/>
            </Border>
        </Grid>

Visual OK: This picture shows the first border with style work
Visual FAIL: this picture shows the second border with style fail

Почему?
Как я могу просто определить в моем стиле границы xaml многократное использование?

1 Ответ

0 голосов
/ 09 ноября 2019

Вы должны установить Grid.Row и Grid.Column для Border, а не TextBlock

     <Border Grid.Column="0" Grid.Row="0" Style="{StaticResource BorderTextBlockStyle}">
            <TextBlock Text="Firstname" Style="{StaticResource GridTitleStyle}"/>
     </Border>
     <Border Grid.Column="1" Grid.Row="0" Style="{StaticResource BorderTextBlockStyle}">
            <TextBlock Text="Lastname" Style="{StaticResource GridTitleStyle}"/>
     </Border>

и удалить эти строки в Resource

    <Setter Property="Grid.Column" Value="{Binding}"/>
    <Setter Property="Grid.Row" Value="{Binding}"/>
...