Xaml - '计算值' - 可以这样做吗?

时间:2012-01-31 14:40:30

标签: wpf xaml

我有以下用于将某些数据绑定到图表控件的Xaml:

<vf:DataSeries 
  AxisYType="Secondary"  
  RenderAs="Line" 
  DataSource="{Binding CdTeThicknessList}" 
  XValueType="DateTime" 
  MarkerEnabled="False" 
  Color="Navy" 
  LegendText="Beta CdTe - Std. Dev.">
    <vf:DataSeries.DataMappings>
    <vf:DataMapping MemberName="XValue" Path="ReadTime"></vf:DataMapping>
    <vf:DataMapping MemberName="YValue" Path="BetaThicknessStdDev"></vf:DataMapping>
    <vf:DataMapping MemberName="Enabled" Path="PointEnabled"></vf:DataMapping>
    </vf:DataSeries.DataMappings>
</vf:DataSeries>

我的问题与设置“已启用”属性有关。根据“BetaThicknessStdDev”是否包含值(如果是,则为True),需要将其设置为True或False。 “PointEnabled”不是CdTeThicknessList(数据源)的属性,我宁愿不做一个。根据“BetaThicknessStdDev”是否包含值,XAML中是否有一种简单的方法将其设置为true?

2 个答案:

答案 0 :(得分:3)

是的,有办法。简单,也许不是那么多。通常情况下,您会使用转换器来处理此类事情。 (IValueConverter)

您的XAML看起来像这样:

IsEnabled="{Binding Path=BetaThicknessStdDev, Converter={StaticResource ThicknessToVisibilityConverter}}"

你的转换器看起来像这样:

Public Class ThicknessToVisibilityConverter
   Implements IValueConverter

   Public Function Convert(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert

      If value is Nothing Then
         Return True
      Else
         Return False
      End If
   End Function

   Public Function ConvertBack(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
      Return Nothing
   End Function
End Class

您还需要将以下内容放入Window(或usercontrol):

<Window.Resources>
    <local:ThicknessToVisibilityConverter x:Key="ThicknessToVisibilityConverter" />
</Window.Resources>

..其中{x}在您的xaml中定义为包含自定义转换器的项目的命名空间。

local

答案 1 :(得分:1)

您可以将Enabled属性绑定到BetaThicknessStdDev并使用自定义值转换器。

请参阅MSDN如何操作。