我只想在C#WPF项目中创建一个滑块,并将滑块的值写入标签。我知道这可能很容易,但我无法让它运作起来。所以这是我的XAML代码中的滑块:
<Slider Height="21" Minimum="-255" Maximum="255" x:Name="sld_brightness" />
<Label x:Name="lb_brightness_nb" />
现在,我尝试根据C#代码中的滑块值更改标签的值:
public void sld_brightness_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
lb_brightness_nb.Content = (int)sld_brightness.Value;
}
此代码可以编译,但不执行任何操作。它不起作用。怎么了?
答案 0 :(得分:3)
你可以直接绑定它;没有必要为此创建一个事件处理程序。
<Slider Height="21" Minimum="-255" Maximum="255" x:Name="sld_brightness" />
<Label x:Name="lb_brightness_nb"
Content="{Binding ElementName=sld_brightness,Path=Value,Converter={StaticResource DoubleToStringConverter}}" />
如果你想使用事件处理程序,那么你似乎错过了连线:
<Slider Height="21" Minimum="-255" Maximum="255" x:Name="sld_brightness"
ValueChanged="sld_brightness_ValueChanged" />
修改强>
要仅显示整数,请使用IValueConverter
。使用<local:DoubleToStringConverter x:Key="DoubleToStringConverter" />
将其添加到资源部分。
public class DoubleToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Math.Round((double)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
答案 1 :(得分:0)
我可以看到标签的名称是lb_brightness_nb然后是lb_brightnessValue。 您可以更改它的名称以进行编译。
您的代码应如下所示:
public void sld_brightness_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
lb_brightness_nb.Content = sld_brightness.Value;
}
请告诉我这是你在说什么或其他什么。