Изменение кода XAML ошибочно меняет приложение - PullRequest
0 голосов
/ 28 апреля 2020

Я знаю, что строка темы звучит глупо, но у меня есть такие случаи, как:

  • Удаление свойства BorderBrush с панели делает содержимое панели (в ContentPresenter исчезнуть
  • Удаление Height="Auto" (что должно быть в порядке, так как по умолчанию установлено значение auto) приводит к исчезновению содержимого панели
  • Удаление комментария или ненужной пустой строки вызывает TabPanel

Перезапуск Visual Studio обычно (или всегда) исправляет это положение. Очистка решения иногда (но не всегда) исправляет это. Отмена изменения кода обычно не не исправить!

Кто-нибудь раньше сталкивался с такими неприятными вещами?

Вот код из файла-нарушителя, но трудно точно определить какие-либо действительные точки ошибки:

<!--
leave the window size to new project default
size (450 x 800) for now, that size should fit
on all development screens until updated
-->
<Window x:Class="Gui.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:Gui"
        Title="MainWindow" Height="450" Width="800">

    <Window.Resources>
        <!-- Style for changing color of detector indicator based on status of detector.-->
        <Style x:Key="DetectorIndicatorStyle" TargetType="Ellipse">
            <Setter Property="Fill"  Value="IndianRed" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding DetectorPresent}" Value="True">
                    <Setter Property="Fill" Value="LightGreen"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>

        <!--Template/Styling for individual Tab Headers-->
        <Style TargetType="TabItem">
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TabItem">

                        <Border BorderBrush="Black" BorderThickness="{TemplateBinding BorderThickness}">
                            <StackPanel Name="Panel">
                                <Ellipse Margin="0 20 0 10" Height="30" Width="30" Fill="Gray"/>
                                <Label Name="Header" Content="{TemplateBinding Header}" HorizontalAlignment="Center" FontWeight="Bold"/>
                            </StackPanel>
                        </Border>

                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="False">
                                <Setter TargetName="Panel" Property="Background" Value="Transparent"/>
                            </Trigger>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="Panel" Property="Background" Value="{StaticResource SMSBlue}"/>
                                <Setter TargetName="Header" Property="Foreground" Value="White"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <!-- Restructuring the entire TabControl (tabs AND content)
                This full restructuring is required to vertically center the TabPanel -->
        <Style TargetType="TabControl">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TabControl">
                        <Grid Margin="5">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>

                            <!--Grid provides container to give border and mask for TabPanel (which contains the tab headers)-->
                            <Grid VerticalAlignment="Center" Grid.Column="0">
                                <!--First border (previous sibling) provides mask to round edges of TabPanel-->
                                <Border Name="mask" Background="White" CornerRadius="5"/>
                                <TabPanel Grid.Column="0" IsItemsHost="True" VerticalAlignment="Center" Margin="0">
                                    <TabPanel.OpacityMask>
                                        <VisualBrush Visual="{Binding ElementName=mask}"/>
                                    </TabPanel.OpacityMask>
                                </TabPanel>
                                <!-- Second border (subsequent sibling) provides the actual border for the TabPanel.
                                        Must be a sibling, not a parent, or border won't "wrap" correctly. -->
                                <Border Grid.Column="0" BorderThickness="1" BorderBrush="Black" CornerRadius="5"/>
                            </Grid>

                            <!--The Tab Content-->
                            <Border Grid.Column="1" BorderThickness="1">
                                <ContentPresenter Margin="5" ContentSource="SelectedContent" />
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>

    <Grid>
        <TabControl TabStripPlacement="Left" VerticalAlignment="Stretch">
            <TabItem Header="Exams">
                <Frame Source="./Tabs/ExamsTab/ExamsHome.xaml"/>
            </TabItem>

            <TabItem Header="Templates" BorderThickness="0 1">
                <Frame Source="./Tabs/TemplatesTab/TemplatesHome.xaml"/>
            </TabItem>

            <TabItem Header="Compare Exams" >
                <Frame Source="./Tabs/CompareExamsTab/CompareHome.xaml"/>

            </TabItem>
        </TabControl>

        <Ellipse Name="DetectorConnectedIndicator"
                 Width="30"
                 Height="30"
                 VerticalAlignment="Bottom"
                 HorizontalAlignment="Left"
                 Margin="5 0 0 5"
                 Stroke="DimGray"
                 StrokeThickness="1"
                 Style ="{StaticResource DetectorIndicatorStyle}"/>
    </Grid>
</Window>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...