2016-06-03 2 views
1

세로 StackPanel이 있는데 부모 StackPanel의 ActualWidth에 바인드 된 .X2 값을 가진 Line-child를 포함하고 싶습니다. 같은 뭔가 :길이가 부모 Panel의 ActualWidth 속성 (데이터 바인딩)에 자체 조정

StackPanel sp = new StackPanel(); 
sp.Orientation = Orientation.Vertical; 
(...) 
Line line = new Line(); 
line.X1 = 0; 
line.X2 = <Some binding to sp.ActualWidth>; 
// line.Y1 = line.Y2 - will it set it's value to 0 by default? 
line.StrokeThickness = 2; 
(...) 
sp.Children.Add(line); 

나는에서 INotifyPropertyChanged 인터페이스를 사용해야합니까? 이것이 가장 적절한 방법입니까?

답변

0

INotifyPropertyChanged는 필요하지 않습니다.

바인딩을 만들고 행의 X2 속성을 설정합니다.

 StackPanel sp = new StackPanel(); 
     sp.Orientation = Orientation.Vertical; 
     Line line = new Line(); 
     line.X1 = 0; 
     var bind = new Binding() 
     { 
      Source = sp, 
      Path = new PropertyPath("ActualWidth") 
     }; 
     BindingOperations.SetBinding(line, Line.X2Property, bind); 
     line.StrokeThickness = 2; 
     line.Stroke=Brushes.Black; 
     line.Margin=new Thickness(10); 
     sp.Children.Add(line); 
0

하는 A 바운드 X2 속성을 제품 라인에 대한 대안과 StrokeThickness 2는 그 폭이 자동으로 StackPanel의 폭으로 설정되어 2의 Height와 사각형 될 것입니다.

var sp = new StackPanel 
{ 
    Orientation = Orientation.Vertical 
}; 
... 
var line = new Rectangle 
{ 
    Height = 2, 
    Fill = Brushes.Black 
}; 
sp.Children.Add(line); 
관련 문제