2011-02-28 2 views
3

코드 숨김으로 그래픽 크기를 조정하기 위해 일부 그래픽을 슬라이더에 데이터 바인딩하려고합니다. 다양한 방법을 시도했지만 ScaleTransform의 ScaleX 속성을 C# 코드로 바인딩하는 방법을 찾을 수 없습니다. 당신이 ScaleTransformSlider의 이름을 줄 필요가 여기에 XAML이 아닌 C# 코드에서 ScaleTransform의 ScaleX에 SetBinding을 설정하는 방법은 무엇입니까?

Line lR = new Line(); 
lR.X1 = 0; 
lR.Y1 = 0; 
lR.X2 = 150; 
lR.Y2 = 150; 
lR.Stroke = new SolidColorBrush(Colors.Blue); 
lR.StrokeThickness = 2; 

ScaleTransform lRSt = new ScaleTransform(); 
lR.RenderTransform = lRSt; 

Slider sliderR = new Slider(); 
sliderR.Minimum = 1; 
sliderR.Maximum = 3; 
sliderR.Value = 1; 
sliderR.TickPlacement = TickPlacement.BottomRight; 
sliderR.TickFrequency = 0.2; 
sliderR.IsSnapToTickEnabled = true; 

/* Set Binding between Slider and Canvas Children */ 
Binding sliderRBind1 = new Binding(); 
sliderRBind1.Source = sliderRBind1; 
sliderRBind1.Path = new PropertyPath("Value"); 
BindingOperations.SetBinding(lRSt, ScaleTransform.ScaleXProperty, sliderRBind1); 

답변

5

먼저 작동하지 않습니다 내 샘플 코드이다 (I 런타임 코드이 발생하지 않습니다, 그래서 XAML 해요) XAML이 경우

의 Button에

<Button.RenderTransform> 
    <ScaleTransform x:Name="btnScaleTransform" /> 
</Button.RenderTransform> 

그런 다음 당신은 Binding을 만들고 와이어 t에 BindingOperations.SetBinding를 사용 윙윙 거리다.

var aBinding = new Binding(); 
aBinding.ElementName = "slider1"; // name of the slider 
aBinding.Path = new PropertyPath("Value"); 

BindingOperations.SetBinding(
    btnScaleTransform, // the ScaleTransform to bind to 
    ScaleTransform.ScaleXProperty, 
    aBinding);    

편집 :
당신이 코드에서 슬라이더를 선언하려면
이 너무 대신 .ElementName

var slider1 = new Slider(); 
grid1.Children.Add(slider1); 

var aBinding = new Binding(); 
aBinding.Source = slider1; 
aBinding.Path = new PropertyPath("Value"); 
+0

감사의 .Source를 사용합니다. 귀하의 답변에 따라 코드를 수정했지만 여전히 작동하지 않습니다. 내 질문을 편집하고 편집 된 코드를 내 질문에 게시했습니다. 문제가 어디 있는지 한번 들여다보십시오. – KMC

+1

@KMC :'sliderRBind1.Source = sliderRBind1;을'sliderRBind1.Source = sliderR; '로 대체하십시오. –

+0

opps. 부주의했다. 그 점을 지적 해 주셔서 감사합니다. – KMC

관련 문제