我有以下用于将某些数据绑定到图表控件的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?
答案 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如何操作。