2013-10-02 4 views
0

Я несколько новичок в Windows Phone 8 и теряюсь в этом {Binding} материале. Я хочу знать, как эта кнопка связывает командный параметр? и с чем этот обязательный параметр связывается?windows phone 8 командный параметр кнопки {binding}

<data:MoviesByCategory x:Key="movies"/> 
    <data:MoreCommand x:Key="moreCommand" /> 
<phone:LongListSelector x:Name="codeMovies" IsGroupingEnabled="true" 
             ItemsSource="{StaticResource movies}" 
             ListHeaderTemplate="{StaticResource movieListHeader}" 
             GroupHeaderTemplate="{StaticResource movieGroupHeader}" 
             ItemTemplate="{StaticResource movieItemTemplate}" 
             JumpListStyle="{StaticResource MoviesJumpListStyle}" 
             toolkit:TiltEffect.IsTiltEnabled="True"> 

       <!-- The group footer template, for groups in the main list --> 
       <phone:LongListSelector.GroupFooterTemplate> 
        <DataTemplate> 
         <Button DataContext="{Binding}" Content="{Binding GetMore}" 
           Command="{StaticResource moreCommand}" CommandParameter="{Binding}"/> 
        </DataTemplate> 
       </phone:LongListSelector.GroupFooterTemplate> 

ответ

1

Использование {Binding} связывается с текущим DataContext так заходящего DataContext="{Binding}" можно просто удалить, как это не делать абсолютно ничего.
Поскольку CommandParameter="{Binding}" находится внутри группового шаблона, dataContext будет вашей группой фильмов, и, таким образом, это будет связано с CommandParameter.

+0

* «можно просто удалить, так как он ничего не делает». * Если не требуется параметр команды, это фильм, отображаемый на кнопке. – Will

+0

@ Все, что сделано, установка DataContext = "{Binding}" не имеет никакого эффекта, по умолчанию DataContext автоматически унаследован от родителя, поэтому установка его явно не будет иметь никакого эффекта. Важным связыванием является CommandParameter = "{Binding}". –

+0

Нет, DataContext делает * не * поток в CommandParameter кнопки. Итак, если вам нужно передать текущее содержимое DataContext в команду через CommandParameter, вы ** должны ** использовать привязку. Сказать, что это «строго никакого эффекта», совершенно неверно. Попробуйте сами. – Will

Смежные вопросы