1

我有一个 CustomerOrder 类,它有 2 个属性,即 CustomerName 和 NumberOfOrders。我有一个 Usercontrol 来显示这两个属性,即 ucCustomerOrder。以下代码对应客户类

Public Class CustomerOrder

    Private m_CustomerName As String = String.Empty
    Private m_NumberOfOrders As Decimal = 0

    Public Property CustomerName As String
        Get
            Return m_CustomerName
        End Get
        Set(ByVal value As String)
            m_CustomerName = value
        End Set
    End Property

    Public Property NumberOfOrders As Decimal
        Get
            Return m_NumberOfOrders
        End Get
        Set(ByVal value As Decimal)
            m_NumberOfOrders = value
        End Set
    End Property

End Class

用户控件 XAML

<UserControl x:Class="ucCustomerOrder"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="99" d:DesignWidth="300">
    <Grid>
        <Label Name="lblCustomerName" Content="{Binding Path=CustomerName}" Height="28" HorizontalAlignment="Left" Margin="23,12,0,0" VerticalAlignment="Top" Width="237" />
        <Label Name="lblNoOfOrders" Content="{Binding Path=NumberOfOrders}" Height="28" HorizontalAlignment="Left" Margin="23,46,0,0" VerticalAlignment="Top" Width="237" />
    </Grid>
</UserControl>

用户控件背后的代码如下。

Public Class ucCustomerOrder

    Private m_CustomerOrder As CustomerOrder

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        m_CustomerOrder = New CustomerOrder
        Me.DataContext = m_CustomerOrder
    End Sub

    Public Property CustomerOrder As CustomerOrder
        Get
            Return m_CustomerOrder
        End Get
        Set(ByVal value As CustomerOrder)
            m_CustomerOrder = value
            Me.DataContext = m_CustomerOrder
        End Set
    End Property

End Class

在我的主窗口中,我有一个组合框控件和 ucCustomerOrder(用户控件),并且我在 Dictionary 对象中有客户订单列表。如下 在此处输入图像描述

XAML 对于主窗口看起来像

<Window x:Class="DictionaryTest"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="DictionaryTest" Height="182" Width="300" xmlns:my="clr-namespace:TestUserControls">
    <Grid>
        <ComboBox Height="23" Width="254" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="12,12,0,0" Name="cboCustomerOrders" ItemsSource="{Binding}" DisplayMemberPath="Key" SelectedValuePath="Value"/>
        <my:ucCustomerOrder HorizontalAlignment="Left" VerticalAlignment="Top" Margin="12,56,0,0" x:Name="UcCustomerOrder1"/>
    </Grid>
</Window>

我的主窗口的代码如下。

Public Class DictionaryTest

    Private Function GetCustomers() As Dictionary(Of String, CustomerOrder)
        Dim customerList As New Dictionary(Of String, CustomerOrder)

        Dim customer1 As New CustomerOrder
        With customer1
            .CustomerName = "XXXX"
            .NumberOfOrders = 100
        End With

        Dim customer2 As New CustomerOrder
        With customer2
            .CustomerName = "ZZZZ"
            .NumberOfOrders = 150
        End With

        customerList.Add("X-Customer", customer1)
        customerList.Add("Z-Customer", customer2)

        Return customerList
    End Function



    Private Sub DictionaryTest_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
        Try
            cboCustomerOrders.ItemsSource = GetCustomers()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class

如何使用绑定将我选择的 CustomerOrder 对象设置为用户控件?

4

0 回答 0