已经给出了dbcontext后面代码的Windows Phone 8.1 Value Converter参数

时间:2014-08-31 15:27:43

标签: wpf xaml

我在为Windows Phone 8.1开发应用时遇到了问题。

在这种情况下:

我已查找当前位置,并将其存储为代码隐藏中GeoPosition类型的变量。

现在我有一个listview,有地方。每个地方还有一个经度和纬度,存储在geoObject类中。 我的listview有一个datacontext,一个ObservableCollection。 我尝试使用valueConverter来计算当前位置与每个项目位置之间的距离。 我已将当前位置设置为ConverterParameter,但我的猜测是它始终为空,因为系统在listview的datacontext中查找值。 参数的datacontext应该是代码隐藏。

我用pseude代码写了我想做的事情

  

Text =" {Binding geodata,                                                                                                                      Converter = {StaticResource DistanceConverter},                                                                                                                      ConverterParameter = {Binding currentPosition,   的RelativeSource = myCodeBehind}}"

有没有办法将codebehind设置为仅用于转换器参数的datacontext?

1 个答案:

答案 0 :(得分:0)

我建议您将当前位置和ObservableCollection个地方移动到某个Viewmodel,并将整个窗口的DataContext设置为此Viewmodel的实例。然后,将ObservableCollection指定为ListView' ItemsSource (而不是设置其DataContext)。

现在,窗口可以访问位置列表和当前位置,因此也可以访问窗口中引用的所有ValueConverters,因为两者都在窗口的Viewmodel中定义。绑定可能看起来类似于以下内容(可能不完全匹配,因为我不知道窗口的确切结构):

Text="{Binding geodata , Converter={StaticResource DistanceConverter}, ConverterParameter={Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.currentPosition}"