Как установить точку (x, y) на странице xaml - PullRequest
0 голосов
/ 20 февраля 2020

Я создал класс структуры Position как структура Point.

В C# я установил Позицию как Position Northeast = new Position(13.084306, 80.210024);

public struct Position 
{
    public double Latitude { get; set; }

    public double Longitude { get; set; }

    public Position(double latitude, double longitude)
    {
        Latitude = latitude;
        Longitude = longitude;
    }
}

Но я не знаю, как установить это в XAML как <maps:GeoBounds Northeast="9,9">

Я хочу неявное преобразование в структуре Position.

Любой, пожалуйста, предложите решение, как преобразовать точки Position следующим образом. Net struct Point.

1 Ответ

4 голосов
/ 20 февраля 2020

Синтаксис элемента XAML должен работать:

<maps:GeoBounds>
    <maps:GeoBounds.Northeast>
        <maps:Position Latitude="9" Longitude="9"/>
    </maps:GeoBounds.Northeast>
</maps:GeoBounds>

Вы также можете написать TypeConverter, который преобразует из string в Position:

public class PositionConverter : TypeConverter
{
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        return sourceType == typeof(string);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
    {
        return Position.Parse((string)value);
    }
}

Зарегистрируйте его с помощью тип Position, подобный этому:

[System.ComponentModel.TypeConverter(typeof(PositionConverter))]
public struct Position 
{
    ...

    public static Position Parse(string positionString)
    {
        ...
    }
}

Теперь синтаксис атрибута, такой как

<maps:GeoBounds Northeast="9,9">

, передаст строку "9,9" в метод Parse, где вы вернете соответствующий экземпляр Position.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...