C# 绑定到DataTemplate之外的MainPage属性

C# 绑定到DataTemplate之外的MainPage属性,c#,wpf,xaml,windows-runtime,C#,Wpf,Xaml,Windows Runtime,我正在尝试将MainPage(CodeBehind)中定义的对象绑定到ListView数据模板中的ConverterParameter: <ListView ...> <ListView.ItemTemplate> <DataTemplate> <TextBlock Text=".. SomeBindingExpression" FontWeight="{Binding Converter={StaticResource C

我正在尝试将MainPage(CodeBehind)中定义的对象绑定到ListView数据模板中的ConverterParameter:

<ListView ...>
  <ListView.ItemTemplate>
    <DataTemplate>
      <TextBlock Text=".. SomeBindingExpression"
   FontWeight="{Binding Converter={StaticResource ChangeDateToFontWeightConverter},ConverterParameter={Binding Source=MainPage,Path=Cache}}"/>
      </TextBlock>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>


目标是将MainPage中定义的“缓存”对象传递到转换器中。obove代码正确调用转换器,但传递的对象参数为null。有没有办法在这个XAML代码中引用缓存对象?

ConverterParameter使用字符串,根本无法进行数据绑定。 您可以向转换器类添加自定义属性,并在主页的代码隐藏中传递“缓存”对象

((ChangeDateToFontWeightConverter)this.Resources["ChangeDateToFontWeightConverter"]).MyCustomProperty = myCacheObject;

一般来说,我建议采取一种方法,使用缓存对象中所需的数据扩展databound类(如果可能的话)。这样,您根本不需要转换器。

这种方法就可以了!但是扩展databound类是正确的。现在,我在主页中管理缓存处理,并在扩展数据绑定类中设置所需的数据。我没有摆脱转换器,但现在它是一个“BooleanToFontWeightConverter”-很简单。谢谢你消除了我的“代码盲症”。