2013-06-03 2 views
0

Я работаю над целью проекта на Windows Phone 7.5 и выше.Почему я не могу привязать команду к кнопке?

То, что я
ListBox

<ListBox HorizontalAlignment="Left" 
     VerticalAlignment="Top" 
     SelectedItem="{Binding singleFavListItem, Mode=TwoWay}" 
     ItemTemplate="{StaticResource userFavBoardListItemTemplate}" 
     ItemsSource="{Binding userfavboardlist}" 
     ScrollViewer.VerticalScrollBarVisibility="Disabled" Margin="12,0,0,12"/> 

ItemTemplate

<DataTemplate x:Key="userFavBoardListItemTemplate"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="70*"/> 
      <ColumnDefinition Width="30*"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock HorizontalAlignment="Left" 
      TextWrapping="Wrap" 
      Text="{Binding boardName}" 
      VerticalAlignment="Center" 
      FontSize="{StaticResource PhoneFontSizeMedium}" 
      Foreground="{StaticResource TitleColor}"/> 
     <Button Command="{Binding quitBoardCommand}" 
       CommandParameter="{Binding boardUrl}" 
       Content="Quit" 
     HorizontalAlignment="Left" 
     VerticalAlignment="Top" 
     Grid.Column="1" 
     FontSize="{StaticResource PhoneFontSizeSmall}" 
     BorderBrush="{StaticResource DateArticalCategoryColor}" 
     Foreground="{StaticResource DateArticalCategoryColor}"> 
    </Button> 
    </Grid> 
</DataTemplate> 

ViewModel

public MyFavListViewModel() 
{ 
    this._quitBoardCommand = new DelegateCommand(this.quitBoardAction); 
} 
private ICommand _quitBoardCommand; 
public ICommand quitBoardCommand 
{ 
    get 
    { 
     return this._quitBoardCommand; 
    } 
} 
private void quitBoardAction(object p) 
{ 
    //my business logic here 
} 

Ошибка
Я нашел ошибку в выходных окон:

'xicihutong.Model.UserFavBoardListRawData' (HashCode = 55845053). BindingExpression: Path = 'quitBoardCommand' DataItem = 'xicihutong.Model.UserFavBoardListRawData' (HashCode = 55845053); целевой элемент - 'System.Windows.Controls.Button' (Name = ''); предназначаться свойство «Command» (тип «System.Windows.Input.ICommand») ..

чем проблема
Что не запутать меня является то, что quitBoardCommand никогда получить срабатывает, когда я нажимаю на кнопку? Кажется, что я не могу привязать команду к кнопке, часть DelegateCommand верна, потому что я могу использовать ее для привязки команды на других страницах. И SelectedItem из ListBox также работает правильно.

Почему я не могу связать этот?

ответ

1

Вы должны ссылаться на DataContext вашего ListBox связываться с вашей командой. Чтобы исправить это, дайте свое имя ListBox, а затем укажите свойство команды

+0

Сообщение: «Не удалось загрузить файл или сборку« PresentationFramework, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 »или одна из его зависимостей. Система не может найти указанный файл». -_-, я что-то пропустил ... –

+0

Вы уверены, что ошибка при вводе вышеуказанного кода? В сборке PresentationFramework содержатся все базовые элементы управления, используемые в WP. Убедитесь, что файл находится: \ Program Files \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0 \ PresentationFramework.dll –

+0

К сожалению, нет папки "v4.0", есть только "v3.5" и «v3.0» ниже «\ Program Files \ Reference Assemblies \ Microsoft \ Framework \» :(И только в папке «v3.0» появляется «PresentationFramework.dll», и я не могу ссылаться на нее. –

0

Можете ли вы попробовать этот код. Вы не забудьте изменить имя «datacontext».

<DataTemplate x:Key="userFavBoardListItemTemplate"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="70*"/> 
      <ColumnDefinition Width="30*"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock HorizontalAlignment="Left" 
      TextWrapping="Wrap" 
      Text="{Binding boardName}" 
      VerticalAlignment="Center" 
      FontSize="{StaticResource PhoneFontSizeMedium}" 
      Foreground="{StaticResource TitleColor}"/> 
     <Button Command="{Path=quitBoardCommand,Source={StaticResource datacontext}}" 
       CommandParameter="{Binding boardUrl}" 
       Content="Quit" 
     HorizontalAlignment="Left" 
     VerticalAlignment="Top" 
     Grid.Column="1" 
     FontSize="{StaticResource PhoneFontSizeSmall}" 
     BorderBrush="{StaticResource DateArticalCategoryColor}" 
     Foreground="{StaticResource DateArticalCategoryColor}"> 
    </Button> 
    </Grid> 
</DataTemplate> 
+0

Что такое DataContext здесь? Я изменяю его на

+0

DataContext ваш ViewModel ресурс ключ < /UserControl.Resources> – ramazanulucay

+0

{MS.Internal.WrappedException: Не удалось загрузить файл или сборку 'PresentationFramework, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' или одна из его зависимостей. Система не может найти указанный файл. ---> System.IO.FileNotFoundException: Не удалось загрузить файл или сборку «PresentationFramework, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35» или одна из его зависимостей. –

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