簡體   English   中英

C#WPF項目中的滑塊

[英]Sliders in a C# WPF project

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

該代碼可以編譯,但不執行任何操作。 它不起作用。 怎么了?

您可以直接綁定它; 無需為此創建事件處理程序。

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

我可以看到標簽的名稱是lb_brightness_nb,然后是lb_brightnessValue。 您可以更改其名稱以進行編譯。

您的代碼應如下所示:

public void sld_brightness_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    lb_brightness_nb.Content = sld_brightness.Value;
}
  • 您也不需要將Value轉換為int。

讓我知道你在說什么還是其他。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM