关于在wpf中设置滑块值的麻烦?

时间:2013-09-18 13:50:01

标签: c# wpf data-binding slider

我在wpf中有一个滑块,想要用户,设置它的最小值和最大值。

xaml代码中的

     <Slider x:Name="slider1" Width="34" Minimum="{Binding Path=Minval}" Value="10"    Height="105" Margin="5,5,5,5"  Maximum="{Binding Path=Maxval}"/>

      <TextBox  Height="23" HorizontalAlignment="Left" Margin="5,5,5,5" Name="minvaltxt" VerticalAlignment="Top" Width="120" />

<TextBox  Height="23" HorizontalAlignment="Left" Margin="5,5,5,5" Name="maxvaltxt" VerticalAlignment="Top" Width="120" />

   <Button Content="Apply" Name="btn"  Height="23" HorizontalAlignment="Left" Margin="5,5,5,5" VerticalAlignment="Top" Width="24" Click="btn_Click"  />
代码背后的

    private double maxval = 80;
    public double Maxval
    {

        get { return maxval; }
        set { value = maxval; }
    }

    private double minval = 5;
    public double Minval
    {

        get { return minval; }
        set { value = minval; }
    }


     private void btn_Click(object sender, RoutedEventArgs e)
     {
      minval= double.Parse(minvaltxt.Text);
      maxval= double.Parse(maxvaltxt.Text);
     slider1.Minimum = Minval
     slider1.Maximum = Maxval;

     }

但它不会更新silder的最小值和最大值! 问题是什么 ? 谢谢你的帮助。

。 现在编辑的问题。 感谢。

3 个答案:

答案 0 :(得分:1)

  1. 您是否为视图设置了DataContext
  2. 在Xaml中,您使用Maxcamdistance,而VM中的属性名称为Maxval
  3. 在您的课程上实施INotifyPropertyChanged并为您的媒体资源提高属性。
  4. 在button_click()中设置属性而不是变量。

答案 1 :(得分:1)

问题是您不使用依赖项属性或INotifyPropertyChanged来通知UI Minval和Maxval的值已更改。在这里查看我的答案:Bind boolean to visualstate

答案 2 :(得分:0)

感谢所有试图提供帮助的可爱用户。

最终我找到了解决方案。

事实上,它不需要INotifyPropertyChanged或依赖属性!

问题是在同一窗口中使用2个Windows窗体主机导致其中一个

numericupdown返回零!

我不知道为什么会这样,但我使用UserControl来克服这个问题。

用户控件支持多个Windows窗体主机,没有任何问题。

似乎wpf windows对托管Windows窗体有限制。

非常感谢。 要新鲜。