我有以下 Xaml,用于将一些数据绑定(bind)到图表控件:
<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>
我的问题与设置“Enabled”属性有关。需要根据“BetaThicknessStdDev”是否包含值(如果包含,则为 True)将其设置为 True 或 False。 “PointEnabled”不是 CdTeThicknessList (数据源)的属性,我不想让它成为一个属性。 XAML 中是否有一种简单的方法可以根据“BetaThicknessStdDev”是否包含值将其设置为 true?
最佳答案
是的,有办法。很简单,也许没那么简单。通常,您会使用转换器来处理此类事情。 (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.Resources>
<local:ThicknessToVisibilityConverter x:Key="ThicknessToVisibilityConverter" />
</Window.Resources>
..其中 local
在您的 xaml 中定义为包含自定义转换器的项目的命名空间。
xmlns:local="clr-namespace:MyProject"
关于wpf - Xaml - 'Calculated Value' - 这可以完成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9081377/