【发布时间】: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