2014-12-25 3 views
1

Windows Phone 8.1 앱을 개발 중이며 순환 진행 표시 줄이 필요합니다.XAML 바인딩 값

<UserControl.Resources> 
    <Style TargetType="ProgressBar" x:Key="CircularProgressBarStyle"> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="ProgressBar"> 
      <Grid x:Name="LayoutRoot"> 
      <local:CircularProgressBarViewModel.Attach> 
       <local:CircularProgressBarViewModel HoleSizeFactor="0.75"/> 
      </local:CircularProgressBarViewModel.Attach> 
      <Ellipse Width="{Binding Diameter}" Height="{Binding Diameter}" 
         HorizontalAlignment="Center" VerticalAlignment="Center" 
         Stroke="LightGray" Opacity="0.5" Fill="Transparent" 
         StrokeThickness="10"> 
      </Ellipse> 
      <local:PiePiece CentreX="{Binding CentreX}" CentreY="{Binding CentreY}" 
           RotationAngle="0" WedgeAngle="{Binding Angle}" 
           Radius="{Binding Radius}" InnerRadius="{Binding InnerRadius}" 
           Fill="Black" Opacity="0.7"/> 
      <Grid util:GridUtils.RowDefinitions="*,2*,*" 
        util:GridUtils.ColumnDefinitions="*,2*,*"> 
       <Viewbox Grid.Row="1" Grid.Column="1"> 
       <TextBlock Name="myValue" Text="{myValue value}" 
          Foreground="WhiteSmoke" 
          FontWeight="Bold" 
          VerticalAlignment="Center" HorizontalAlignment="Center"/> 
       </Viewbox> 
      </Grid></Grid> 
      </ControlTemplate> 
     </Setter.Value> 
     </Setter> 
    </Style> 
    </UserControl.Resources> 

이 어떻게 (MainPage.xaml.cs를, 예를 들어) 뒤에 코드에서 이름이 "myValue"로 값을 변경할 수 없습니다 CircularProgressBarViewModel에서 :

나는이 UserControl을 코드가?

답변

1

UserControl을 사용중인 메인 페이지에서 myValue을 가져와야하는 경우 컨트롤에 DependencyProperty을 만들고 페이지에서 제어 할 값을 설정할 수 있습니다.

public sealed partial class YourUserControl: UserControl 
{ 
    public static readonly DependencyProperty myValueProperty = DependencyProperty.Register("myValue", typeof(string), typeof(YourUserControl), new PropertyMetadata(string.Empty)); 

    public YourUserControl() 
    { 
     this.InitializeComponent(); 
    } 

    public string myValue 
    { 
     get { return (string)GetValue(myValueProperty); } 
     set { SetValue(myValueProperty , value); } 
    } 
} 

그리고이 같은 당신의 MainPage에

:

<controls:YourUserControl myValue={Binding YourValue}/> 
+0

은 팁을 주셔서 감사합니다! – michael24B