저는 C# -WPF에서 일하고 있습니다.UserControl에서 속성을 다시 평가하십시오.
나는 간단한 UserControl을 만들었습니다. 좌표를 사용하면 이미지에 X를 그릴 수 있습니다.
매개 변수는 다음과 같습니다
- 센터 포인트 : 크로스
- 전경 센터 : 십자가
내 Cross.xaml에 대한 두께 : 십자가
<UserControl x:Name="userControl"
x:Class="Project.Cross">
<Grid>
<Line Stroke="{Binding Foreground, ElementName=userControl}"
StrokeThickness="{Binding Thickness, ElementName=userControl}"
X1="{Binding X1, ElementName=userControl, Mode=OneWay}"
X2="{Binding X2, ElementName=userControl, Mode=OneWay}"
Y1="{Binding Y1, ElementName=userControl, Mode=OneWay}"
Y2="{Binding Y2, ElementName=userControl, Mode=OneWay}" />
<Line Stroke="{Binding Foreground, ElementName=userControl}"
StrokeThickness="{Binding Thickness, ElementName=userControl}"
X1="{Binding X2, ElementName=userControl, Mode=OneWay}"
X2="{Binding X1, ElementName=userControl, Mode=OneWay}"
Y1="{Binding Y1, ElementName=userControl, Mode=OneWay}"
Y2="{Binding Y2, ElementName=userControl, Mode=OneWay}"/>
</Grid>
</UserControl>
내 Cross.xaml.cs는 :
public partial class Cross : UserControl
{
public Cross()
{
InitializeComponent();
}
public readonly static DependencyProperty CenterPointProperty = DependencyProperty.Register("CenterPoint",
typeof(PointF), typeof(Cross),
new PropertyMetadata(default(PointF)));
public PointF CenterPoint
{
get { return (PointF)GetValue(CenterPointProperty); }
set { SetValue(CenterPointProperty, value); }
}
public readonly static DependencyProperty ThicknessProperty = DependencyProperty.Register("Thickness",
typeof(int), typeof(Cross),
new PropertyMetadata(2));
public int Thickness
{
get { return (int)GetValue(ThicknessProperty); }
set { SetValue(ThicknessProperty, value); }
}
public float X1
{
get
{
return (float)(CenterPoint.X - (Width/2));
}
}
public float X2
{
get
{
return (float)(CenterPoint.X + (Width/2));
}
}
public float Y1
{
get
{
return (float)(CenterPoint.Y - (Height/2));
}
}
public float Y2
{
get
{
return (float)(CenterPoint.Y + (Height/2));
}
}
}
나는 그것을 좋아 호출 할 수 있습니다 :
<local:Cross CenterPoint="{Binding Point}" Thickness="8" Foreground="Yellow" Height="40" Width="40"/>
I은 문제가 있다면, 십자가가 표시되지 않습니다. 중단 점을 추가했습니다. CenterPoint를 변경하면 값 X1, X2 ...이 새로 고쳐지지 않는 것 같습니다. C#에서 이러한 값을 다시 계산하도록하려면 어떻게해야합니까? 당신이 X1에 바인딩을 원하는 경우
당신에게
local : Cross가 정의 된 xaml을 표시 할 수 있습니까? 예를 들어 그 안에 무엇이 들어 있는가? –
질문을 이해할 수 없습니다. Cross.xaml 파일에 내 로컬 네임 스페이스에서 UserControl'Cross'를 정의했습니다. –
난 그냥 왜 사용자 정의 컨트롤의 너비와 높이를 기반으로 고정 된 크기로 십자가를 그려야하고 그 대상을 대상 개체에 상대적으로 위치를 설정하여 그리는 무엇이든 주위에 그 개체를 이동하지 않습니다 궁금하네요. 그래서 나는 당신이 십자가를 그리는 것을 궁금해하고있었습니다. –