Silverlight에서 Canvas 클래스 (Reflector 포함)는 특별한 간단한 작업을 수행하지 않고 3 개의 종속 속성 (Left, Top, ZIndex)과 2 개의 MeasureOverride 및 ArrangeOverride 메서드를 매우 간단하게 구현합니다.Silverlight Canvas : 어떻게 작동합니까?
하지만 난처럼 내 구현을 사용하는 경우 :
class MyCanvas : Panel { /* Top and Left dependency properties implementation */ }
그리고 표준 캔버스처럼 XAML에서 MyCanvas를 사용합니다. 예상대로 작동하지 않습니다 (빈 화면이 보입니다).
캔버스는 어떻게 구현 되었습니까?
- 추가 코드 : 표준 캔버스로 변경 MyCanvas, 난 위치 (10)에 충진 사각형을 볼 수있는 경우
<local:MyCanvas>
<Rectangle
local:MyCanvas.Left="10"
local:MyCanvas.Top="10"
Width="100"
Height="100"
Fill="Black" />
</local:MyCanvas>
: 같은 XAML에서 사용 MyCanvas.cs
public class MyCanvas : Panel
{
public static double GetTop(DependencyObject obj)
{
return (double)obj.GetValue(TopProperty);
}
public static void SetTop(DependencyObject obj, double value)
{
obj.SetValue(TopProperty, value);
}
// Using a DependencyProperty as the backing store for Top. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TopProperty =
DependencyProperty.RegisterAttached("Top", typeof(double), typeof(MyCanvas), new PropertyMetadata(0.0));
public static double GetLeft(DependencyObject obj)
{
return (double)obj.GetValue(LeftProperty);
}
public static void SetLeft(DependencyObject obj, double value)
{
obj.SetValue(LeftProperty, value);
}
// Using a DependencyProperty as the backing store for Left. This enables animation, styling, binding, etc...
public static readonly DependencyProperty LeftProperty =
DependencyProperty.RegisterAttached("Left", typeof(double), typeof(MyCanvas), new PropertyMetadata(0.0));
}
, 10.
<Canvas>
<Rectangle
Canvas.Left="10"
Canvas.Top="10"
Width="100"
Height="100"
Fill="Black" />
</Canvas>
Canvas 클래스 코드를 게시 할 수 있습니까? –