【问题标题】:Setting TextBlock Text in Code Behind Gives NullReferenceException在后面的代码中设置 TextBlock 文本会导致 NullReferenceException
【发布时间】:2014-01-16 10:56:28
【问题描述】:

我的页面上有一个TextBlock 控件,我想在后面的代码中设置值,但我得到的是NullReferenceException。 TextBlock 的值根据滑块控件的当前位置而变化。需要注意的是,当错误发生时,页面永远不会完全 NavigatedTo。我不确定我能做些什么来解决这个问题,有什么想法吗?

XAML

<TextBlock x:Name="OpacityNumberTextBlock" HorizontalAlignment="Center">
<Slider x:Name="MenuOpacitySlider"  Minimum="1" Maximum="6" Margin="12,20,12,0" 
                    ValueChanged="MenuOpacitySlider_ValueChanged" Value="1"/>

代码背后

public void MenuOpacitySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        Slider slider = sender as Slider;

        //Round the value so it is a whole number even when the slider is dragged
        slider.Value = Math.Round(slider.Value);

        num = (int)slider.Value;

        switch (num)
        {
            case 1:
                OpacityNumberTextBlock.Text = "1"; //NullReferenceException
                break;
            ..
        }
    }

【问题讨论】:

  • 也许您尝试在 InitializeComponent() 之前订阅 ValueChanged?
  • @Matthew,滑块值真的等于“1”吗? switch-case 场景的默认行为是什么?
  • 我刚刚将我的 Slider 控件作为编辑添加到我的原始帖子中。我其实一共有6个案例,就停在第一个。
  • 在 ValueChanged 事件中删除 OpacityNumberTextBlock 的设置可以消除错误,并且我可以在 OnNavigatedTo 事件中设置 TextBlock 就好了。但我需要 TextBlock 文本随着滑块控件从 1-6 的变化而变化。
  • 我创建了一个测试项目,这段代码运行良好,文本块值正确更改。问题应该出在其他地方。

标签: c# windows-phone-7 windows-phone-8 slider textblock


【解决方案1】:

您的ValueChangedInitializeComponent() 中被触发,而TextBlock 为空。在InitializeComponent()之后订阅:

在 XAML 中:

<TextBlock x:Name="OpacityNumberTextBlock" HorizontalAlignment="Center"/>
<Slider x:Name="MenuOpacitySlider"  Minimum="1" Maximum="6" Margin="12,20,12,0" Value="1"/>

在后面的代码中:

public MainPage()
{
    InitializeComponent();
    MenuOpacitySlider.ValueChanged+=MenuOpacitySlider_ValueChanged;
}

【讨论】:

  • 好的,我试试这个。我也应该从 XAML 中删除它吗?
  • @Matthew yes - 从 xaml 中的 Slider 中删除订阅(如上面的代码)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-08
相关资源
最近更新 更多