2015-05-31 66 views
0

我的控制器我有这个Circle ProgressBar,响应我的Slider值改为:如何到达从代码隐藏

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="530,303,114,303"> 
     <Grid HorizontalAlignment="Center" VerticalAlignment="Center" Height="153" Width="155"> 
      <DesignInControl:CircularProgressBar HorizontalAlignment="Center" VerticalAlignment="Center" 
      SegmentColor="#FF878889" StrokeThickness="8" Percentage="100" /> 
      <DesignInControl:CircularProgressBar Name="circleVale" HorizontalAlignment="Center" VerticalAlignment="Center" 
      Percentage="{Binding Value, ElementName=slider}" SegmentColor="#026873" StrokeThickness="8" /> 
     </Grid> 
    </StackPanel> 
    <Slider x:Name="slider" Maximum="100" Value="0" Width="200" Margin="597,185,227,495" /> 
    <Label Name="lblCircleProgress" Content="{Binding Value, ElementName=slider}" Margin="698,344,284,343" Foreground="White" 

我怎样才能在改变这个值代码隐藏? 我试图给这个控件一个name属性(Name =“circleVale”),但由于某种原因,我无法在代码隐藏中达到它。

回答

0

您的circleVale控件应该可以在后面的代码中访问,但除此之外,我认为使用SetCurrentValue会将绑定留在原地。

你能从代码中更改进度条的任何其他属性吗?

0

您将名为“circleVale”的CircularProgressBar属性的百分比绑定到滑块的Value。为了他们的代码改变落后尝试设置depdendency属性:

public int SliderValue 
    { 
     get { return (int)GetValue(SliderValueProperty); } 
     set { SetValue(SliderValueProperty, value); } 
    } 

    // Using a DependencyProperty as the backing store for SliderValue. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty SliderValueProperty = 
     DependencyProperty.Register("SliderValue", typeof(int), typeof(MainWindow), new PropertyMetadata(0)); 

    private void btnChangeSliderValue_Click(object sender, RoutedEventArgs e) 
    { 
     SliderValue = 70; 
    } 

设置在构造你的窗口在DataContext:

public MainWindow() 
    { 
     InitializeComponent(); 
     this.DataContext = this; 
    } 

这可以为你的XAML的例子:

<StackPanel> 
     <Slider x:Name="slider" Maximum="100" Value="{Binding SliderValue}" Width="200"/> 
     <Button Click="btnChangeSliderValue_Click" HorizontalAlignment="Center" Content="Change slider value" Margin="5,10"/> 
    </StackPanel> 

这样您就不需要使用其名称访问滑块。使用绑定更容易,可以一步步到达MVVM。