windows phone 8-在将滑块值设置为文本属性期间出现C#System.NullReferenceExcept
本文关键字:属性 文本 NullReferenceExcept C#System 设置 phone windows | 更新日期: 2023-09-27 17:57:52
我有一个简单的滑块项目。我想在文本框中显示滑块值。
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBox x:Name="sliderValue" HorizontalAlignment="Stretch" VerticalAlignment="Top" />
<Slider x:Name="slider" Minimum="0" Maximum="20" Value="5" ValueChanged="slider_ValueChanged"/></Grid>
// Constructor
public MainPage()
{
InitializeComponent();
}
private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
var slider = sender as Slider;
string value = string.Format("{0}", slider.Value);
sliderValue.Text = value;
}
在最后一行中,我得到了这个错误:
System.NullReferenceException:对象引用未设置为对象的实例。在slider_test.MainPage.slider_ValueChanged(对象发送方,RoutedPropertyChangedEventArgs`1e)在
有人能解释一下问题出在哪里吗?非常感谢。
您可以通过将滑块值绑定到TextBlock文本来使用XAML。
<Slider x:Name="SliderValueText" ValueChanged="SliderValueText_ValueChanged"
VerticalAlignment="Top"
Width="440"
Minimum="0"
Maximum="20"
Value="5" />
<TextBlock Height="30"
Text="{Binding Value, ElementName=SliderValueText}"
VerticalAlignment="Top"
HorizontalAlignment="Center" />
private void SliderValueText_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
{
string value = string.Format("{0}", e.NewValue);
MessageBox.Show(value);
}
这是一种选择。这里需要滑块值。所以我存储在变量"value"中。这就是我在MessageBox中显示的内容。但这是最不可能的尝试。。。
我不确定,但这可能会对你有所帮助。
private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
Dispatcher.BeginInvoke(() =>
{
string value = string.Format("{0}", e.NewValue);
sliderValue.Text = value;
});
}
通过这种方式,使用e.NewValue轮询更改值:
private void slider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
Debug.WriteLine("Value changed and value is " + e.NewValue.ToString());
}
但对于只使用XAML绑定的标签:
<TextBlock x:Name="someLabel"
Text="{Binding ElementName=slider, Path=Value}"
/>