【发布时间】:2016-06-03 10:06:05
【问题描述】:
我是 WPF 的新手,我一直在尝试使用 MVVM 模式。 我正在尝试将一个类的 2 个属性绑定到一个 ComboBox 和一个 TextBox。
ComboBox 工作正常,我有 2 个项目,但我不确定如何将 TextBox 绑定到所选项目的“详细信息”属性。所以当 ComboBox 选择的项目改变时,TextBox 也会更新。
任何帮助将不胜感激。
MainView.xaml
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ComboBox ItemsSource="{Binding Scenarios}" DisplayMemberPath="Name" SelectedValuePath="Name" SelectedValue="{Binding Name}" HorizontalAlignment="Right" Width="95" Height="23" VerticalAlignment="Bottom" Margin="0,0,412,287" />
<TextBox HorizontalAlignment="Left" Height="23" Margin="119,10,0,0" TextWrapping="Wrap" Text="{Binding Details}" VerticalAlignment="Top" Width="120"/>
</Grid>
</Window>
MainView.xaml.vb
Class MainWindow
Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.DataContext = New MainViewModel()
End Sub
End Class
MainViewModel.vb
Imports System.Collections.ObjectModel
Public Class MainViewModel
Public Property Scenarios As ObservableCollection(Of Scenario)
Sub New()
Dim scenarioList As New List(Of Scenario)
Dim scenario1 As New Scenario
scenario1.Name = "Test1"
scenario1.Details = "Test scenario 1"
scenarioList.Add(scenario1)
Dim scenario2 As New Scenario
scenario2.Name = "Test2"
scenario2.Details = "Test scenario 2"
scenarioList.Add(scenario2)
Scenarios = New ObservableCollection(Of Scenario)(scenarioList)
End Sub
End Class
Scenario.vb
Public Class Scenario
Public Property Name As String
Public Property Details As String
End Class
【问题讨论】:
-
把名字放在你的组合框上,比如 x:Name = "MyCombo",然后在文本框上,你把 Text="{Binding SelectedItem, ElementName=MyCombo}"....