0
私はDatagridComboboxColumnについて同様の質問がありましたが、.itemsourceを使用してDataGrid外の配列にバインドする方法を示しました。私は、データグリッドが実行時にバインドされているコレクションにバインドしようとして問題が発生しています。WPF VB.NET 4.0ランタイム時のDatagridComboBoxColumnバインディング
私はこれにどのように近づいているかを確認するためのテストプログラムを用意しました。
Class MainWindow
Dim ServerInfoArray As List(Of ServerInfo) = New List(Of ServerInfo)
Private Sub GetInfo(ByVal list As List(Of String))
For Each server As String In list
Dim tempip As ComboBoxItem = New ComboBoxItem
Dim tempip2 As ComboBoxItem = New ComboBoxItem
Dim sinfo As ServerInfo = New ServerInfo
tempip.Content = "192.129.123.23"
tempip2.Content = "23.213.223.21"
sinfo.IPArray.Items.Add(tempip)
sinfo.IPArray.Items.Add(tempip2)
sinfo.ServerName = server
ServerInfoArray.Add(sinfo)
DataGrid1.Items.Refresh()
Next
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim serverlist As List(Of String) = New List(Of String)
serverlist.Add("Test")
serverlist.Add("Random")
serverlist.Add("Local")
GetInfo(serverlist)
End Sub
Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
Dim Col_Serial As DataGridTextColumn = New DataGridTextColumn()
Col_Serial.Binding = New Binding("Servername")
Col_Serial.Header = "Servername"
Col_Serial.Width = 40
Dim Col_IPArray = New DataGridComboBoxColumn()
Col_IPArray.Header = "IP Addresses"
Col_IPArray.IsReadOnly = True
'Col_IPArray.ItemsSource = serverInfoArray ' Don't know how to do this.
Col_IPArray.SelectedValuePath = "IPArray"
Col_IPArray.DisplayMemberPath = "IPArray"
DataGrid1.Columns.Add(Col_Serial)
DataGrid1.Columns.Add(Col_IPArray)
DataGrid1.ItemsSource = ServerInfoArray
End Sub
End Class
Class ServerInfo
Dim _Servername As String
Dim _IPArray As ComboBox
Public Property Servername() As String
Get
Return _Servername
End Get
Set(ByVal value As String)
_Servername = value
End Set
End Property
Public Property IPArray As ComboBox
Get
Return _IPArray
End Get
Set(ByVal value As ComboBox)
_IPArray = value
End Set
End Property
Public Sub New()
_Servername = Nothing
_IPArray = New ComboBox
End Sub
End Class
すべての文字列とブール値をバインドすることができます。
このDataGridComboBoxColumnをプロパティに関連付けられたリストにバインドする方法がわかりません。実行時にこれを行う必要があるため、XAMLを使用することはできません。
私に簡単な例を教えてください。また、このコンボボックスは読み取り専用にする必要があります。私はユーザー入力を必要としません。つまり、IPArrayをコンボボックスにする必要があります(文字列のリスト)。私は前にそれを試したと思ったが、私は再び試してみる。 – Jasin
私は近づいていると思います。私はitemsourceを外部にバインドする必要がありますか?データグリッドは同じクラス配列にバインドされているためです。私はまだデータを表示することができません。私は何をしようとしている私のコードを更新しました。 – Jasin
はい。 Windowsフォームでは、コンボボックス列の各セルを繰り返し、コンボボックスとして明示的に型定義し、それぞれにデータソースを適用しました。 –