2013-09-27 14 views
5

我试图创建一个绑定成基于所选项目的属性标签的背景色。我使用的形式:如何获得在LightSwitch中的IContentItemProxy的SetBinding方法的路径?

this.FindControl("ItemDisplayTitle") 
     .SetBinding(TextBox.BackgrounProperty, **PATH**, 
      new MyIconverter(), BindingMode.OneWay); 

如果我使用“价值”为路径,它采用ItemDisplayTitle的值来设置使用MyIconverter()

颜色,但我真的想使用其他属性屏幕上显示“健康”,但是该窗口的本地属性。

研究已经告诉我,我use the form "Details.Entity.AnotherProperty " 2012年6月6日10:16应该 - 奥蒂斯游侠

但是当我尝试使用“DataSourceName.MyEntityName.MyProperty”它似乎并没有工作。 我也试过“Details.MyEntityName.MyProperty” 和绝望“Details.Entity.MyProperty”

我很确定,我只是有一个心理打嗝,但什么都要 详细实体AnotherProperty是什么?我是否错过了一个明确的参考页面,究竟路径应该是什么?

+0

你是否将此添加到屏幕代码?你的财产是在那个屏幕上的本地? – TsSkTo

+0

我将此添加到屏幕代码。该属性位于数据源中,但也显示在该屏幕上。 –

+0

我做了类似的事情,但在xaml中绑定了我的控件。如果将此代码添加到屏幕中,则您的实体应显示在屏幕数据上下文中。 xaml中的'this.customers.FirstName'或'this.CreatedScreenProperty'这些属性的路径前面是“屏幕”,比如'{Binding Path =“Screen.MyProperty Mode =”TwoWay}“ – TsSkTo

回答

2

的问题是,你应该在数据网格添加一个处理程序每一行。他们是3个简单的步骤。

拳的结果,通知比可以绑定所有行或单个控制在排:

enter image description here

  • 步骤1。声明转换器。我假设你的转换器运行良好。

这是我的转换器:

Public Class BooleanDateConverter 

    Implements System.Windows.Data.IValueConverter 

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


     If DirectCast(value, Boolean) Then 
      Return New System.Windows.Media.SolidColorBrush(
       System.Windows.Media.Color.FromArgb(170, 102, 255, 245)) 
     Else 
      Return New System.Windows.Media.SolidColorBrush(
       System.Windows.Media.Color.FromArgb(170, 255, 0, 0)) 
     End If 

    End Function 

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

     Return Nothing 
    End Function 

End Class 
  • 步骤2和3。绑定的DataGrid和DataGrid行:在InitializeDataWorkspace

绑定数据网格:

Private Sub Conversio_CategoriaPDI_a_ElementDeCosts_InitializeDataWorkspace(
     saveChangesTo As System.Collections.Generic.List(
       Of Microsoft.LightSwitch.IDataService)) 

     AddHandler Me.FindControl(
         "TConversio_CategoriaPDI_a_ElementDeCosts" 
        ).ControlAvailable, AddressOf bindejarDataGrid 

    End Sub 

这是数据网格的处理程序。结合everyrow内部功能:

Private Sub bindejarDataGrid(
      sender As Object, 
      e As Microsoft.LightSwitch.Presentation.ControlAvailableEventArgs) 

     AddHandler DirectCast(e.Control, Windows.Controls.DataGrid 
        ).LoadingRow, AddressOf bindejar 
    End Sub 

结合一些控制行的每一行:

Private Sub bindejar(sender As Object, 
         e As Windows.Controls.DataGridRowEventArgs) 
     Dim b As Windows.Data.Binding = New Windows.Data.Binding("parametritzat") 
     b.Mode = Windows.Data.BindingMode.OneTime 
     b.Converter = New BooleanDateConverter 
     b.ValidatesOnExceptions = True 
     e.Row.SetBinding(System.Windows.Controls.Label.BackgroundProperty, b) 

    End Sub 

感谢:

+0

谢谢。我想过去几天我一直在为一般概念而苦苦挣扎。今天我会再试一次。 –