【问题标题】:Sliders in a C# WPF projectC# WPF 项目中的滑块
【发布时间】:2012-10-03 03:47:20
【问题描述】:

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

这段代码可以编译,但不执行任何操作。它不工作。怎么了?

【问题讨论】:

  • lb_brightnessValue 在哪里定义?您在寻找 lb_brightness_nb 吗?
  • 哎呀,我相应地编辑了我的帖子。尽管如此,即使在那条线上有一个检查点,它似乎根本没有执行它。它不会触发。
  • 抱歉,您还需要在 xaml 中添加事件处理程序。

标签: c# wpf xaml slider


【解决方案1】:

你可以直接绑定;无需为此创建事件处理程序。

<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。使用 &lt;local:DoubleToStringConverter x:Key="DoubleToStringConverter" /&gt; 将其添加到资源部分。

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();
    }
}

【讨论】:

  • 哇,这简直是轻而易举。有什么方法可以只获取整数作为滑块的值?
  • 这到底意味着我将不得不使用事件终结器?
  • @dnLL 不,您仍然不需要事件处理程序。请参阅上面的更新。
  • 它与事件处理程序配合得很好。听起来我只是缺少滑块的 ValueChanged 属性。非常感谢,我什至不知道我可以将值直接绑定到我的 XAML 代码中。
  • 不使用事件处理程序有什么好处吗?
【解决方案2】:

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

您的代码应如下所示:

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

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

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2023-03-24
    相关资源
    最近更新 更多