정수 목록에 바인딩되는 Windows Phone 7 ListBox
이 있습니다. 기본 MVVM Light 템플릿을 사용하므로 데이터가 포함 된 ViewModel
클래스와 간단한 RelayCommand
클래스가 있습니다. 목록 상자는 다음과 같습니다.WP7 : ListBox.ItemsPanel이 내 ElementName 데이터 바인딩을 손상시키는 이유는 무엇입니까?
<ListBox ItemsSource="{Binding MyData}">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cmd:EventToCommand Command="{Binding ElementName=ContentGrid, Path=DataContext.TestCommand}"
CommandParameter="{Binding}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
이렇게하면 단추 안에 정수의 세로 목록이 표시됩니다. 이들 중 하나를 클릭하면 다음 명령 코드가 실행되어 팝업을 표시합니다. new RelayCommand<int>(i => MessageBox.Show("Test" + i));
그러나 XAML을 추가하여 가로 목록을 변경하면 데이터 바인딩이 실패합니다. 단추를 클릭해도 오류 메시지가 출력 창에 기록되지 않습니다.
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
나는 EventToCommand
바인딩의 다른 유형을 시도했다. 예를 들어, 내 ViewModel
을 정적 자원으로 지정하십시오. 그것은 작동하지만 위의 예제보다 덜 이상적입니다.
왜 ItemsPanel
이 데이터 바인딩을 중단합니까?
누군가가 여기에이 문제를 언급 : http://forums.silverlight.net/forums/p/ 213237/503547.aspx 문제는 MVVM Light를 포함하지 않으며 WP7에만 해당됩니다. – user10789