Как исправить ошибку XLS1106 datacontext not set?

При выполнении анализа кода появляются такие сообщения: введите сюда описание изображения

Ниже приведен один из примеров кода, где нужно исправить это сообщение:

<Window x:Class="FitnesCentr.formAllClient"
        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:FitnesCentr"
        mc:Ignorable="d"
        Title="Клиенты фитнес-центра" Height="481.2" Width="884.8"
        Background="LightSlateGray">

    <Window.Triggers>
        <EventTrigger RoutedEvent="Window.Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                     To="1" Duration="00:00:22" >
                        <DoubleAnimation.EasingFunction>
                            <BackEase EasingMode="EaseOut" />
                        </DoubleAnimation.EasingFunction>
                    </DoubleAnimation>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Window.Triggers>
    <Window.Resources>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <EventTrigger RoutedEvent="TextBox.MouseDoubleClick">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>

                                <ColorAnimation Storyboard.TargetProperty="Background.Color"
                                        To="DarkSeaGreen" AutoReverse="True" Duration="0:0:2" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Style.Triggers>
        </Style>

        <Style TargetType="Label">
            <Setter Property="FontSize" Value="15"/>
            <Setter Property="FontFamily" Value="Verdana"/>
            <Setter Property="FontWeight" Value="Black"/>
        </Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="FontSize" Value="14" />
                    <Setter Property="Foreground" Value="OrangeRed" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    
    <Grid>
        <Label Content="Имя" HorizontalAlignment="Left" Margin="589,33,0,0" VerticalAlignment="Top"/>
        <Label Content="Фамилия" HorizontalAlignment="Left" Margin="589,62,0,0" VerticalAlignment="Top"/>
        <Label Content="Отчество" HorizontalAlignment="Left" Margin="589,93,0,0" VerticalAlignment="Top"/>
        <Label Content="Номер телефона" HorizontalAlignment="Left" Margin="589,124,0,0" VerticalAlignment="Top"/>
        <Label Content="День рождения" HorizontalAlignment="Left" Margin="589,153,0,0" VerticalAlignment="Top"/>
        <Label Content="Email" HorizontalAlignment="Left" Margin="589,182,0,0" VerticalAlignment="Top" />
        <TextBox HorizontalAlignment="Left" Height="23" Margin="680,34,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="188" x:Name="txtName" />
        <TextBox HorizontalAlignment="Left" Height="26" Margin="680,62,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="188" x:Name="txtSurname"/>
        <TextBox HorizontalAlignment="Left" Height="26" Margin="680,93,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="188" x:Name="txtFather"/>
        <TextBox HorizontalAlignment="Left" Height="23" Margin="737,124,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="131" x:Name="txtNumPhone"/>
        <TextBox HorizontalAlignment="Left" Height="24" Margin="737,153,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="131" x:Name="txtDateBirth"/>
        <TextBox HorizontalAlignment="Left" Height="24" Margin="650,182,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="218" x:Name="txtMailPost"/>
        <Calendar HorizontalAlignment="Left" Margin="697,257,0,0" VerticalAlignment="Top" Background="LightGray" BorderBrush="DimGray" x:Name="calendarForData" SelectedDatesChanged="calendar_Changed" Height="164" Width="171"/>
        <Label Content="Пол" HorizontalAlignment="Left" Margin="589,211,0,0" VerticalAlignment="Top" />
        <TextBox HorizontalAlignment="Left" Height="23" Margin="637,211,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="231" x:Name="txtSex"/>
        <Button Content="Создать" HorizontalAlignment="Left" Margin="602,296,0,0" VerticalAlignment="Top" Width="75" Click="addDate_Click" Background="White"/>
        <Button Content="Обновить" HorizontalAlignment="Left" Margin="602,320,0,0" VerticalAlignment="Top" Width="75" Click="btnUpdate_Click" Background="White"/>
        <Button Content="Удалить" HorizontalAlignment="Left" Margin="602,368,0,0" VerticalAlignment="Top" Width="75" Click="btnDelete_Click" Background="White"/>
        <Button Content="Изменить" HorizontalAlignment="Left" Margin="602,344,0,0" VerticalAlignment="Top" Width="75" Click="btnChanged_Click" Background="White"/>
        <Label Content="№" HorizontalAlignment="Left" Margin="589,4,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.558,0.106"/>
        <TextBox HorizontalAlignment="Left" Height="18" Margin="626,10,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="242" x:Name="txtPorydk"/>
        <DataGrid HorizontalAlignment="Left" Height="438" Margin="10,4,0,0" VerticalAlignment="Top" Width="574" Name="gridForClint"/>
    </Grid>
</Window>

Как исправить все эти сообщение? Можно ли скрыть эти сообщения?


Ответы (1 шт):

Автор решения: aepot

Это не ошибка, а информационное сообщение. Можете его игнорировать. Скорее всего, возникает из какого-то анализатора кода. Чтобы установить, добавьте DataContext = this в конструкторе формы в C# и пересоберите приложение.

Но лучше всего поизучайте, что такое привязка данных через Binding, там и узнаете про то, что такое DataContext, и с чем его едят.


Бонус

Ваша разметка, только без войны с марджинами. Разберитесь, что да как. Делать интерфейсы станет значительно проще. И да, здесь можно не фиксировать размер окна, а только задать ему MinWidth и MinHeight, размер таблицы будет меняться в зависимости от размера окна автоматически.

<Window.Triggers>
    <EventTrigger RoutedEvent="Window.Loaded">
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                    To="1" Duration="00:00:22" >
                    <DoubleAnimation.EasingFunction>
                        <BackEase EasingMode="EaseOut" />
                    </DoubleAnimation.EasingFunction>
                </DoubleAnimation>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Window.Triggers>
<Window.Resources>
    <Style TargetType="TextBox">
        <Setter Property="Margin" Value="5"/>
        <Style.Triggers>
            <EventTrigger RoutedEvent="TextBox.MouseDoubleClick">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard>

                            <ColorAnimation Storyboard.TargetProperty="Background.Color"
                                    To="DarkSeaGreen" AutoReverse="True" Duration="0:0:2" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Style.Triggers>
    </Style>

    <Style TargetType="TextBlock">
        <Setter Property="FontSize" Value="15"/>
        <Setter Property="FontFamily" Value="Verdana"/>
        <Setter Property="FontWeight" Value="Black"/>
        <Setter Property="Margin" Value="5"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
    </Style>
    <Style TargetType="Button">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="FontSize" Value="14" />
                <Setter Property="Foreground" Value="OrangeRed" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition Width="300"/>
    </Grid.ColumnDefinitions>
    <DataGrid Margin="5" Name="gridForClint"/>
    <StackPanel Orientation="Vertical" Grid.Column="1" Margin="5">
        <DockPanel>
            <TextBlock Text="№"/>
            <TextBox x:Name="txtPorydk"/>
        </DockPanel>
        <DockPanel>
            <TextBlock Text="Имя"/>
            <TextBox x:Name="txtName" />
        </DockPanel>
        <DockPanel>
            <TextBlock Text="Фамилия"/>
            <TextBox x:Name="txtSurname" />
        </DockPanel>
        <DockPanel>
            <TextBlock Text="Отчество"/>
            <TextBox x:Name="txtFather" />
        </DockPanel>
        <DockPanel>
            <TextBlock Text="Номер телефона"/>
            <TextBox x:Name="txtNumPhone" />
        </DockPanel>
        <DockPanel>
            <TextBlock Text="День рождения"/>
            <TextBox x:Name="txtDateBirth" />
        </DockPanel>
        <DockPanel>
            <TextBlock Text="Email"/>
            <TextBox x:Name="txtMailPost" />
        </DockPanel>
        <DockPanel>
            <TextBlock Text="Пол"/>
            <ComboBox x:Name="comboSex" Margin="5">
                <ComboBoxItem>мужской</ComboBoxItem>
                <ComboBoxItem>женский</ComboBoxItem>
            </ComboBox>
        </DockPanel>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Calendar Grid.Column="1" Margin="5" Background="LightGray" BorderBrush="DimGray" x:Name="calendarForData" SelectedDatesChanged="calendar_Changed" Height="164" Width="171"/>
            <StackPanel Orientation="Vertical" VerticalAlignment="Center">
                <StackPanel.Resources>
                    <Style TargetType="Button">
                        <Setter Property="Margin" Value="5,2"/>
                        <Setter Property="Width" Value="75"/>
                        <Setter Property="Padding" Value="5"/>
                        <Setter Property="Background" Value="White"/>
                    </Style>
                </StackPanel.Resources>
                <Button Content="Создать" Click="addDate_Click"/>
                <Button Content="Обновить" Click="btnUpdate_Click"/>
                <Button Content="Удалить" Click="btnDelete_Click"/>
                <Button Content="Изменить" Click="btnChanged_Click"/>
            </StackPanel>
        </Grid>
    </StackPanel>
</Grid>

P.S. Не используйте Label в WPF, используйте TextBlock. Он легче и быстрее работает.

→ Ссылка