0

我只想在我的 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;
}

此代码确实编译但不执行任何操作。它不工作。怎么了?

4

2 回答 2

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();
    }
}
于 2012-10-03T03:53:29.520 回答
0

我可以看到标签的名称是 lb_brightness_nb 然后是 lb_brightnessValue。您可以更改它的名称以进行编译。

您的代码应如下所示:

public void sld_brightness_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    lb_brightness_nb.Content = sld_brightness.Value;
}
  • 您也不需要将 Value 转换为 int 。

让我知道这是你在说什么还是别的什么。

于 2012-10-03T03:55:17.957 回答