从幻灯片栏中获取一次值

时间:2016-05-15 10:45:19

标签: c# wpf slider

我想在鼠标移动完成后从滑动条中获取值,并且不想多次标记内容更改,我的代码:

List<String> lines = new ArrayList<>();
Map<String,Map<String,List<String>>> tree = new TreeMap<String,Map<String,List<String>>>();

    for(int i=0;i<lines.size();i++){

        String[] parts = lines.get(i).split(",");

        if(!tree.containsKey(parts[0])){
            tree.put(parts[0],new TreeMap<String,List<String>>());
        }

        Map<String,List<String>> tree2 = tree.get(parts[0]);

        if(!tree.containsKey(parts[1])){
            tree2.put(parts[1],new ArrayList<String>());
        }

        List<String> tree3 = tree2.get(parts[1]);

        if(!tree3.contains(parts[2])){
            tree3.add(parts[2]);
        }

    }

怎么做?

2 个答案:

答案 0 :(得分:1)

您必须使用DragCompleted事件(https://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.thumb.dragcompleted%28v=vs.110%29.aspx)。
在用户释放MouseButton后触发。

private void SecondsSlider_DragCompleted(object sender, RoutedEventArgs e)
{
    this.SecondsLabel.Content = (int)this.SecondsSlider.Value;
}

XAML中的用法:

<Slider Thumb.DragCompleted="SecondsSlider_DragCompleted" />

答案 1 :(得分:0)

根据我的理解,您只想从滑块获取一次值。 您可以使用静态bool,一旦crested将不再创建,如下所示:

private void SecondsSlider_ValueChanged(object sender,RoutedPropertyChangedEventArgs e)     {         static bool isPicked = false;         如果(!isPicked){         this.SecondsLabel.Content =(int)this.SecondsSlider.Value;         isPicked = TRUE;         }     }

这样你只能得到一次值并改变bool isPicked的tp为true,一旦改为true,你就不会再选择滑块的值了。 我希望能解决你的问题。

P.S:对不起,如果我的答案格式不正确,原因是我现在正在使用手机。