【问题标题】:Changing the color of a MapPolyline更改 MapPolyline 的颜色
【发布时间】:2020-09-14 18:14:50
【问题描述】:

我正在尝试使用绑定更改某些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”类型的“填充”属性上设置“绑定”。 “绑定”只能在 DependencyObject 的 DependencyProperty 上设置

在搜索时我找到了this answer,这让我觉得我不能这样做,因为 MapPolyline 控件的定义方式。我厌倦了深入研究 MapPolyline 控件,似乎FillPropertyPath,而不是DependencyProperty

我说的对吗?有没有其他方法可以通过绑定或一些代码更改Fill 属性?

【问题讨论】:

  • “Fill 似乎是一个 PropertyPath”——不太可能。一定是刷机。我们在谈论this MapPolyline吗?我将创建一个附加的 DP,其单一目的是绑定和设置 Fill on change
  • 是的,就是 MapPolyline。你如何附加一个新的DP?您是否创建了一个扩展 MapPolyline 的新类?
  • 阅读DependencyProperty.RegisterAttached()。用回调注册它并更改填写回调。 “你是否创建了一个扩展 MapPolyline 的新类” - 它可能更简单 - 我会尝试

标签: c# wpf xaml bing-maps


【解决方案1】:

我说的对吗?

是的,你是。绑定的目标必须是依赖属性,而Fill 似乎不是。

有没有其他方法可以通过绑定或一些代码更改Fill 属性?

例如,您可以为MapPolyline 处理Loaded 事件并动态设置其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"/>

【讨论】:

  • @OttavioCampana:你试过这个还是发生了什么?如果您的问题已解决,请接受答案并投票。
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 2013-10-03
  • 2017-11-15
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多