2013-09-27 1 views
5

Я пытаюсь создать привязку, чтобы изменить цвет фона метки на основе свойства выбранного элемента. Я использую форму:Как получить путь для метода SetBinding на IContentItemProxy в LightSwitch?

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

Если я использую «Value» в качестве пути, он использует значение ItemDisplayTitle, чтобы установить цвет, используя MyIconverter()

Но я действительно хочу, чтобы использовать другое свойство «Здоровье», которое находится на экране, но является локальным свойством для этого окна.

Исследования показывают мне, что я должен use the form "Details.Entity.AnotherProperty " 6 июня 2012 10:16 утра - Otis Ranger, когда я пытаюсь использовать «DataSourceName.MyEntityName.MyProperty» не кажется

Но работать. Я также попытался «Details.MyEntityName.MyProperty» и в отчаянии «Details.Entity.MyProperty»

Я уверен, что я просто наличие психического икота, но что должно Подробности, Entity и ДругойProperty be? и я пропускаю очевидную справочную страницу о том, какой именно путь должен быть?

+0

Вы добавляете это в код экрана? и ваше свойство является локальным для этого экрана? – TsSkTo

+0

Я добавляю это к коду экрана. Свойство находится в источнике данных, но также отображается на этом экране. –

+0

Я сделал что-то подобное, но связал свои элементы управления в xaml. Если этот код добавляется на экран, ваши объекты должны появляться в контексте данных экранов. 'this.customers.FirstName' или' this.CreatedScreenProperty' в xaml пути для этих свойств предшествовал «Экран», например '{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. Bind DataGrid и 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 

Это обработчик для DataGrid.Связывание с 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

Спасибо. Я думаю, что за последние несколько дней я боролся с общей концепцией. Сегодня я собираюсь сделать еще одну попытку. –

 Смежные вопросы

  • Нет связанных вопросов^_^