更改MapPolyline的颜色。

问题描述 投票:0回答:1

我正在尝试改变一些产品的填充颜色。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 属性,是用绑定还是用代码?

c# wpf xaml bing-maps
1个回答
0
投票

我说的对吗?

是的,你是对的。绑定的目标必须是一个依赖属性,并且是 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"/>
© www.soinside.com 2019 - 2024. All rights reserved.