Ссылка на объект не установлена ​​ошибка при попытке установить видимость сетки - PullRequest
0 голосов
/ 30 января 2012

Я пытался установить видимость сетки из кода позади.

grdStopTimeOut.Visibility = Windows.Visibility.Visible

Я объявил эту сетку в XAML и установил видимость Visible.

<Grid Name="grdTimeTStopCondition"  Visibility="Hidden" Margin="0,29,0,-6">

Каким-то образом, когда приложение запускается, сетка приходит как ничто и генерируются исключения.Кто-нибудь знает, почему это происходит ??

XAML-файл

<Page x:Class="Page1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  mc:Ignorable="d" 
  d:DesignHeight="300" d:DesignWidth="300"
  Title="Page1">
<Grid>
    <ComboBox Height="23" HorizontalAlignment="Left"  Name="cmbStopConditions" VerticalAlignment="Top" Width="86" SelectedIndex="0">
        <ComboBoxItem Content="Expression"></ComboBoxItem>
        <ComboBoxItem Content="Manual"></ComboBoxItem>
    </ComboBox>
    <Grid Name="grdStopTimeOut" Visibility="Visible" >
        <Label Content="Timeout" Height="28" HorizontalAlignment="Left"  Name="lblTimeout_stopcond" VerticalAlignment="Top" Margin="0,29,0,0" />
        <TextBox Height="23" HorizontalAlignment="Left"  Name="txtStopTimeout" VerticalAlignment="Top" Width="30" Margin="60,29,0,0" />
        <Label Content="secs" Height="28" HorizontalAlignment="Left"  Name="lblTimeoutSec_stopCond" VerticalAlignment="Top" Width="39" Margin="105,24,0,0" />
    </Grid>
</Grid>
</Page>

CodeBehind

Class Page1 

Public Sub New()

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.

End Sub
Private Sub cmbStopConditions_SelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles cmbStopConditions.SelectionChanged
    Dim item As ComboBoxItem = TryCast(cmbStopConditions.SelectedItem, ComboBoxItem)
    If item IsNot Nothing Then
        If Convert.ToString(item.Content) = "Expression" Then
            grdStopTimeOut.Visibility = Windows.Visibility.Visible
        ElseIf Convert.ToString(item.Content) = "Manual" Then
            grdStopTimeOut.Visibility = Windows.Visibility.Hidden
        End If
    End If
End Sub

Конечный класс

с уважением,

SKB

1 Ответ

3 голосов
/ 30 января 2012

Редактировать: Обработчик может возникнуть до инициализации сетки, поэтому проверка нуля в порядке.

Вы вызываете это до InitializeComponent?Это объясняет отсутствие ссылки, так как все поля связаны с именованными элементами управления в этом методе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...