Skip to content

Instantly share code, notes, and snippets.

@hilapon
Last active August 29, 2015 14:13
Show Gist options
  • Save hilapon/a8d3aa0e21ddbca1add1 to your computer and use it in GitHub Desktop.
Save hilapon/a8d3aa0e21ddbca1add1 to your computer and use it in GitHub Desktop.
Person のコレクションを保持する ViewModel、VB版
Option Explicit On
Option Strict On
Imports System.Collections.ObjectModel
Imports MenuButtonApp.Models
Namespace ViewModels
Public Class MainWindowViewModel
Inherits ViewModel
Public Sub New()
Me.Persons = New ObservableCollection(Of Person)()
Me.Persons.Add(New Person() With {.Id = 1, .Name = "平本", .Age = 17})
Me.Persons.Add(New Person() With {.Id = 2, .Name = "ファウラー", .Age = 51})
Me.Persons.Add(New Person() With {.Id = 3, .Name = "ヘルスバーグ", .Age = 54})
Me.Persons.Add(New Person() With {.Id = 4, .Name = "ペゾルト", .Age = 61})
Me.Persons.Add(New Person() With {.Id = 5, .Name = "リヒター", .Age = 54})
Me.Persons.Add(New Person() With {.Id = 6, .Name = "トーバルズ", .Age = 45})
Me.Persons.Add(New Person() With {.Id = 7, .Name = "ストロヴストルップ", .Age = 64})
Me.Persons.Add(New Person() With {.Id = 8, .Name = "カーニハン", .Age = 73})
Me.Persons.Add(New Person() With {.Id = 9, .Name = "ベック", .Age = 53})
End Sub
#Region "Person変更通知プロパティ"
Private _Person As Person
''' <summary>
''' 社員を取得・設定します。
''' </summary>
Public Property Person() As Person
<DebuggerNonUserCode()>
Get
Return _Person
End Get
Set(ByVal value As Person)
If (Object.Equals(_Person, value)) Then Return
_Person = value
RaisePropertyChanged("Person")
End Set
End Property
#End Region
#Region "Persons変更通知プロパティ"
Private _Persons As ObservableCollection(Of Person)
''' <summary>
''' 社員のコレクションを取得・設定します。
''' </summary>
Public Property Persons() As ObservableCollection(Of Person)
<DebuggerNonUserCode()>
Get
Return _Persons
End Get
Set(ByVal value As ObservableCollection(Of Person))
If (Object.Equals(_Persons, value)) Then Return
_Persons = value
RaisePropertyChanged("Persons")
End Set
End Property
#End Region
#Region "MessageCommand"
Private _MessageCommand As ViewModelCommand
Public ReadOnly Property MessageCommand() As ViewModelCommand
Get
If _MessageCommand Is Nothing Then
_MessageCommand = New ViewModelCommand(AddressOf Message)
End If
Return _MessageCommand
End Get
End Property
Private Sub Message()
Dim message = New System.Text.StringBuilder()
message.AppendFormat("名前 = {0}", Me.Person.Name)
message.AppendLine()
message.AppendFormat("年齢 = {0}", Me.Person.Age)
MessageBox.Show(message.ToString())
End Sub
#End Region
End Class
End Namespace
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment