Windows Phone 7
[wp7] CommandPattern DataList의 Item Templete 안의 Button 이벤트 빼기
동동(이재동)
2010. 6. 29. 10:43
점점 mvvm에 대해서 아는것 같다…
일반 컨트롤의 이벤트는 command를 이용해서 빼는것은 이제 조금씩 익숙해지고 있다.
하지만 ListBox안의 Template에서 이벤트를 빼야 한다면? 자 해보자
<ListBox x:Name="SearchCountryListBox" ItemsSource="{Binding SearchCountryListBoxItemSource}" Height="240">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image Source="{Binding Flag}" Width="80" Height="50" Grid.Column="0" />
<TextBlock Text="{Binding Name}" FontSize="35" Grid.Column="1" Margin="40,0,40,0"/>
<Button x:Name="button" Content="button " Grid.Column="2" >
<i:Interaction.Behaviors>
<HugeFlow_CommandPattern_Interactivity:ExecuteAncestorInstantCommandBehavior CommandName="SearchCountrySelectButtonCommand">
<i:Interaction.Triggers>
<i:EventTrigger SourceName="button" EventName="Click">
<i:InvokeCommandAction CommandName="CommandTriggers"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</HugeFlow_CommandPattern_Interactivity:ExecuteAncestorInstantCommandBehavior>
</i:Interaction.Behaviors>
</Button>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
보이는가? 버튼에 command pattern 적용한것을?
이렇게 만들려면 치는거보다 블랜드에서 하는게 편하다…
해당 listbox item template에 들어가서
일단 ExecuteAncestorInstatntCommandBehavior를 더블 클릭하여 만든다.
여기서 부턴 일반 commandPattern이랑 같으니까 생략~
아 그리고 중요한건 블랜드에서 CommandName을 쓸때 수동으로 쓸수 밖에 없다 DataBinding이 뜨지 않기때문에
만든 커맨드 이름을 쓰면 된다.^^