메뉴에 대한 사용자 지정 컨트롤을 만들고 현재 ListBox가 있습니다. 다음과 같은 것 :Windows Phone - 사용자 정의 컨트롤을 ViewModel에 전파하는 방법
Tap 이벤트를 잡으려면 클래스에서 속성을 가져와 MVVM 모델을 유지해야합니다. MainPage.xaml.cs 또는 MainViewModel에서 어떻게 찾을 수 있습니까?
<controls:BottomMenu x:Name="BottomMenu" Canvas.Top="{Binding MenuCanvasTop}"
Width="480" Height="400">
</controls:BottomMenu>
내가 내 MainViewModel이 코드를 준비해야 :
public RelayCommand<string> GoToSectionCommand
{
get
{
return goToArticleCommand
?? (goToArticleCommand = new RelayCommand<string>(
NavigateToSection));
}
}
을하지만 그것을 호출 할 수있는 방법을 모르겠어요
나는 내에서 MainPage.xaml에서이 코드가 있습니다. 가장 좋은 방법은 뭔가요?
편집 : 목록 상자 확장을 시도 :와
<ListBox x:Name="MenuItemsList"
Grid.Row="1"
ItemsSource="{Binding ProgramList, Mode=OneWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="10">
<Button Content="{Binding Title}"
Command="{Binding ListButtonClickCommand, Source={RelativeSource Self}}"
CommandParameter="{Binding Url}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
을 코드 숨김에서 MainPage.xaml에 다음
public ICommand ListButtonClickCommand
{
get { return (ICommand)GetValue(ListButtonClickCommandProperty); }
set { SetValue(ListButtonClickCommandProperty, value); }
}
public static readonly DependencyProperty ListButtonClickCommandProperty =
DependencyProperty.Register("ListButtonClickCommand", typeof(ICommand), typeof(BottomMenu), new PropertyMetadata(null));
public BottomMenu()
{
InitializeComponent();
}
:
<controls:BottomMenu x:Name="BottomMenu" Canvas.Top="{Binding MenuCanvasTop}"
Width="480" Height="400"
ListButtonClickCommand="{Binding MenuItemButtonCommand}">
</controls:BottomMenu>
그리고 MainViewModel에서 :
private ICommand menuItemButtonCommand;
public ICommand MenuItemButtonCommand
{
get
{
return menuItemButtonCommand
?? (menuItemButtonCommand = new RelayCommand(
NavigateToArticleSection));
}
}
지금은 운이 없군요. 작동하지 않습니다. RelayCommand가 트리거되지 않습니다.
편집 2 문제는 사용자 지정 컨트롤에 바인딩 명령이있는 것 같지만 수정 방법을 모르겠습니다.
감사합니다. –