【发布时间】: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 控件,似乎Fill 是PropertyPath,而不是DependencyProperty。
我说的对吗?有没有其他方法可以通过绑定或一些代码更改Fill 属性?
【问题讨论】:
-
“Fill 似乎是一个 PropertyPath”——不太可能。一定是刷机。我们在谈论this MapPolyline吗?我将创建一个附加的 DP,其单一目的是绑定和设置 Fill on change
-
是的,就是 MapPolyline。你如何附加一个新的DP?您是否创建了一个扩展 MapPolyline 的新类?
-
阅读
DependencyProperty.RegisterAttached()。用回调注册它并更改填写回调。 “你是否创建了一个扩展 MapPolyline 的新类” - 它可能更简单 - 我会尝试