저는 MVVM 및 MVVM에 매우 익숙하며 vb.net 배경에서 왔습니다. 나는 학습을위한 몇 가지 간단한 프로젝트를 만들었고 버튼 하나가 명령을 호출하지 않고있다. 다음과 같이 내가 (가독성을 위해 단축)보기 XAML이 있습니다MVVM Light in vb.net 명령 매개 변수가있는 버튼
<UserControl x:Class="FTC.View.NavigationView"
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"
xmlns:vm="clr-namespace:FTC_Application.FTC.ViewModel"
mc:Ignorable="d"
d:DesignWidth="900"
Height="161"
DataContext="{Binding NavigationView, Source={StaticResource Locator}}" >
<UserControl.Resources>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
</UserControl.Resources>
<Grid>
<Button HorizontalAlignment="Left" Margin="10" VerticalAlignment="Top"
Command="{Binding SwapParent}"
CommandParameter="{Binding Parent1}" Background="{x:Null}" BorderBrush="{x:Null}" Width="130" Height="45">
<TextBlock Text="{Binding Parent1}" Foreground="#FFE4E4E4"/>
</Button>
그리고 다음은 버튼 기능 때문에이 코드는 부모를 변경하기위한 것입니다
Private _sNavs() As String = {"Dashboard", "Jobs", "People", "Products", "Financials", "Admin"}
Private _sParentNavs() As String
Public Property SwapParent As RelayCommand
Private Property ParentNavs() As String()
Get
Return _sParentNavs
End Get
Set(value As String())
If _CurrentParent = String.Empty Then
_CurrentParent = "Dashboard"
Else
If _sParentNavs.Contains(_CurrentParent) = False Then
Return
End If
End If
RefreshParents(_CurrentParent)
RaisePropertyChanged(ParentNavsPropertyName)
End Set
End Property
Public Sub New()
If _CurrentParent = String.Empty Then
_CurrentParent = "Dashboard"
End If
RefreshParents(_CurrentParent)
SwapParent = New RelayCommand(Sub()
ParentNavs = _sParentNavs
End Sub)
End Sub
Private Sub RefreshParents(sCurrent)
If _sNavs.Contains(sCurrent) = True Then
_sParentNavs = Filter(_sNavs, sCurrent, False, CompareMethod.Text)
Else
_sParentNavs = Filter(_sNavs, "Dashboard", False, CompareMethod.Text)
End If
Parent1 = _sParentNavs(0)
Parent2 = _sParentNavs(1)
Parent3 = _sParentNavs(2)
Parent4 = _sParentNavs(3)
Parent5 = _sParentNavs(4)
End Sub
의 뷰 모델 클래스의 코드 제공된 값을 기반으로 배열에 제공된 값을 제외한 모든 항목을 포함합니다. 그런 다음 배열 값을 페이지의 단추에 지정합니다. 모든 것은 버튼 콘텐트 바인딩과 관련하여 작동하지만, 어떤 이유로 명령이 실행되지 않습니다.
내가이요르단 왕에게 사전에이 뷰 모델에