1

ライトスイッチの次のカスタムコントロールを作成しましたが、データにアクセスして取得するにはどうすればよいですか?

<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

次に、そのカスタムコントロールを画面に追加します。(最初にプロパティを作成してから、それにカスタムコントロールを割り当てます)

ここに画像の説明を入力してください

実行すると、次のように表示されます ここに画像の説明を入力してください

だから私の質問は、これらの2つのコンボボックスにアクセスしてその値を取得するにはどうすればよいですか?

見つけた

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

アクセス制御に使用できます。しかし、どうすれば各コントロールの値を個別に取得できますか?

4

1 に答える 1

1

これは次のように実行できます。最初にローカルプロパティを作成し、カスタムコントロールでそれらをそれらの値にバインドする必要があります。

私のシナリオでは、StartYear/StartMonthという2つのローカルプロパティを作成しました。次に、カスタムコントロールでそれらをバインドする必要が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コード内で、これらのローカルプロパティに直接アクセスできます。

于 2013-02-26T05:40:10.270 に答える