我正在尝试改变一些产品的填充颜色。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'类型的'Fill'属性上设置'Binding'。绑定 "只能设置在DependencyObject的DependencyProperty上。.
在搜索时,我发现 本回答这让我觉得我不能这样做,因为MapPolyline控件的定义方式。我疲惫地研究了一下MapPolyline控件,发现好像是 Fill
是一个 PropertyPath
,不是 DependencyProperty
.
我说的对吗?有没有其他方法可以改变我的 Fill
属性,是用绑定还是用代码?
我说的对吗?
是的,你是对的。绑定的目标必须是一个依赖属性,并且是 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"/>