c# - 如何获取 LightSwitch 中 IContentItemProxy 上的 SetBinding 方法的路径?

标签 c# silverlight visual-studio-lightswitch

我正在尝试创建绑定(bind)以根据所选项目的属性更改标签的背景颜色。我正在使用表格:

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

如果我使用“Value”作为路径,它会使用 ItemDisplayTitle 的值来使用 MyIconverter() 设置颜色

但我真的想使用屏幕上的另一个属性“Health”,但它是此窗口的本地属性。

研究表明我应该 use the form "Details.Entity.AnotherProperty " 2012 年 6 月 6 日上午 10:16 - Otis Ranger

但是当我尝试使用“DataSourceName.MyEntityName.MyProperty”时,它似乎不起作用。 我也试过“Details.MyEntityName.MyProperty” 并在绝望中“Details.Entity.MyProperty”

我很确定我只是精神出了问题,但是应该怎么办 DetailsEntityAnotherProperty 是什么?我是否缺少一个明显的引用页面来说明路径应该是什么?

最佳答案

问题是您应该为数据网格上的每一行 添加一个处理程序。它们是 3 个简单的步骤。

拳头结果,注意你可以绑定(bind)所有行或行中的单个控件:

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)数据网格和数据网格行:

在 InitializeDataWorkspace 上绑定(bind)数据网格:

    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

这是数据网格的处理程序。绑定(bind)到函数内部的每一行:

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

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

为每一行绑定(bind)一些控制行:

    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

感谢:

关于c# - 如何获取 LightSwitch 中 IContentItemProxy 上的 SetBinding 方法的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19055178/

相关文章:

c# - 无法在 C# 中打开 Excel 文件

c# - 以编程方式清除 Silverlight 应用程序存储?

entity-framework - 如何从外部安逸的服务中填充电灯开关屏幕?

c# - 使用 LINQ 比较两个字段

azure - 如何从部署在 Azure 网站上的域根转发到 Lightswitch html 客户端

c# - 采用 TDD 的第三方组件

c# - 如何检索在另一个子字符串之前领先的数字子字符串

c# - C#.NET 中 liskov 原则的类型参数约束

c# - 绑定(bind) Button.IsEnabled() 属性无法正常工作

wpf - 如何将颜色设置为窗口的高亮颜色?