Изменение цвета MapPolyline - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь изменить цвет заливки некоторых MapPolyline с привязкой. В моем коде XAML указано

<m:Map x:Name="myMap"
       CredentialsProvider="XXXXX"
       Mode="Road">
    <m:MapItemsControl ItemsSource="{Binding Devices}">
        <m:MapItemsControl.ItemTemplate>
            <DataTemplate>
                <m:MapPolyline Locations="{Binding Locations}"
                     Fill="{Binding Path=Fill}"
                     Stroke="Blue"
                     StrokeThickness="4"
                     Opacity="1"/>
            </DataTemplate>
        </m:MapItemsControl.ItemTemplate>
    </m:MapItemsControl>
</m:Map>

Когда я пытаюсь запустить программу, я получаю сообщение об ошибке Невозможно установить «Привязку» для свойства «Заливка» типа «MapPolyline». «Привязка» может быть установлена ​​только в DependencyProperty объекта DependencyObject .

При поиске я нашел этот ответ , что заставляет меня думать, что я не могу этого сделать из-за способ определения элемента управления MapPolyline. Я устал копаться в элементе управления MapPolyline и мне кажется, что Fill - это PropertyPath, а не DependencyProperty.

Я прав? Есть ли другой способ изменить свойство Fill с помощью привязки или кода?

1 Ответ

0 голосов
/ 28 мая 2020

Я прав?

Да, верно. Целью привязки должно быть свойство зависимости, а Fill, похоже, не имеет.

Есть ли другой способ изменить свойство Fill с помощью привязки или с помощью какой-то код?

Например, вы можете обработать событие Loaded для MapPolyline и динамически установить его свойство Fill:

private void OnLoaded(object sender, RoutedEventArgs e)
{
    MapPolyline mapPolyline = (MapPolyline)sender;
    if (mapPolyline.DataContext is YourViewModel viewModel)
    {
        mapPolyline = viewModel.Fill;
    }
}

XAML:

    <m:MapPolyline  Loaded="OnLoaded"
                    Locations="{Binding Locations}"
                    Fill="{Binding Path=Fill}"
                    Stroke="Blue"
                    StrokeThickness="4"
                    Opacity="1"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...