如何在lightswitch中访问自定义控件值

时间:2013-02-22 05:55:06

标签: vb.net visual-studio-lightswitch

我为lightswitch创建了以下自定义控件,如何访问和获取数据?

<UserControl x:Class="CustomControls.DateRange"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="75" d:DesignWidth="123">
    <Grid x:Name="LayoutRoot" Background="White" Height="73">
        <ComboBox Height="23" HorizontalAlignment="Left" Margin="12,9,0,0" Name="cmbStartYear" VerticalAlignment="Top" Width="100" />
        <ComboBox Height="23" HorizontalAlignment="Left" Margin="13,39,0,0" Name="cmbStartMonth" VerticalAlignment="Top" Width="99" />
    </Grid>
</UserControl>

xaml.vb文件编码: 在这里,我根据我的逻辑为这些组合框添加了值。

Private Sub UserControl_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        Dim availableYears As List(Of Integer) = GetYears()

        For Each year As Integer In availableYears
            cmbStartYear.Items.Add(year)
        Next
    End Sub

然后我将自定义控件添加到屏幕。 (首先创建属性,然后为其分配自定义控件)

enter image description here

运行时会显示如下 enter image description here

所以我的问题是如何访问这两个组合框并获得它的价值?

我找到了

Dim cmbyear As IContentItemProxy = Me.FindControl("StartYear")

可用于访问控制。但我怎么能分别得到每个控件的价值呢?

1 个答案:

答案 0 :(得分:1)

这可以按如下方式完成:首先必须创建本地属性,并且在自定义控件中需要将它们与这些值绑定。

在我的场景中,我创建了两个名为StartYear / StartMonth的本地属性。然后在自定义控件中需要将它们绑定到SelectedItem,模式必须是TwoWay。我做了如下:

<Grid x:Name="LayoutRoot" Background="White" Height="73">
        <ComboBox Height="23" HorizontalAlignment="Left" Margin="12,9,0,0" Name="cmbStartYear" VerticalAlignment="Top" Width="100" SelectedItem="{Binding Screen.StartYear, Mode=TwoWay}"/>
        <ComboBox Height="23" HorizontalAlignment="Left" Margin="13,39,0,0" Name="cmbStartMonth" VerticalAlignment="Top" Width="99" SelectedItem="{Binding Screen.StartMonth, Mode=TwoWay}" />
    </Grid>

然后在我的xaml.vb代码中可以直接访问那些本地属性。