Вот мой XAML:
<Window x:Class="Gui.Wpf.MoveElementWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="clr-namespace:Gui.Wpf.Converters"
Title="Move the red element" Height="300" Width="500">
<Window.Resources>
<!-- Converter for element location -->
<converters:LocationConverter x:Key="LocationConverter" />
</Window.Resources>
<Grid>
<Rectangle
Name="RedRectangle"
Width="150"
Height="80"
Stroke="Black"
Fill="Red"
MouseDown="RedRectangle_MouseDown"
MouseMove="RedRectangle_MouseMove" />
<TextBlock
Name="StatusTextBlock"
HorizontalAlignment="Left"
VerticalAlignment="Bottom" />
</Grid>
</Window>
Я хочу иметь возможность привязывать данные RedRectangle
на экране к свойству StatusTextBlock
Text
, т.е. я хочу StatusTextBlock
сказать: "Расположение красного прямоугольника: 12, 18", например.
Я создал конвертер для преобразования Point
в String
:
[ValueConversion(typeof(Point), typeof(String))]
public class LocationConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
Point location;
string valueString;
location = (Point)value;
valueString = string.Format("Red rectangle's location is: {0}, {1}",
location.X, location.Y);
return valueString;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
Чего я не знаю, так это как данные связывают местоположение прямоугольника, поскольку это не такпредоставляется через свойство, но вместо этого через метод: RedRectangle.PointToScreen(new Point(0,0));
.Пожалуйста, помогите, спасибо.