Xaml - «Расчетная стоимость» - это можно сделать? - PullRequest
2 голосов
/ 31 января 2012

У меня есть следующий 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>

Мой вопрос связан с настройкой свойства "Включено". Это должно быть установлено в True или False, в зависимости от того, содержит ли BetaThicknessStdDev значение (True, если оно есть). «PointEnabled» не является свойством CdTeThicknessList (источник данных), и я бы не стал его использовать. Есть ли простой способ в XAML установить его в значение true в зависимости от того, содержит ли BetaThicknessStdDev значение?

Ответы [ 2 ]

3 голосов
/ 31 января 2012

Да, есть способ. Просто, может быть, не так много. Обычно вы используете конвертер для этого типа вещей. (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"
1 голос
/ 31 января 2012

Вы можете привязать свое свойство Enabled к BetaThicknessStdDev и использовать собственный преобразователь значений.

См. MSDN , как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...