【发布时间】:2017-01-31 06:01:14
【问题描述】:
我用 MVVM 模式制作了 UWP 应用程序(我是这么认为的 :)) 我的应用程序有列表框的数据模板。 View.xaml 中的列表框:
<ListBox x:Name="lbMySongs" ItemsSource="{Binding Path=MySongs}" ItemTemplate="{StaticResource lbSongsTemplate}" Grid.Row="1">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox/>
日期模板资源:
<DataTemplate x:Key="lbSongsTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=Artist}" Grid.Column="0"/>
<TextBlock Text=" - " Grid.Column="1"/>
<TextBlock Text="{Binding Path=Title}" Grid.Column="2"/>
//Here i bind command, but it's not binding cos ItemsSource have no command. ViewModel have this command.
<Button Command="{Binding Path=DownloadCommand}" Content="{Binding Path=Query}"/>
<TextBlock Text="{Binding Duration}" Grid.Column="5" HorizontalAlignment="Right"/>
</Grid>
</DataTemplate>
需要为此按钮设置DataContext。 我在 ViewModel 中的命令。示例:
class ViewModel
{
...
public RelayCommand DownloadCommand { get; set; }
public ObservableCollection<SomeClass> MySongs { get; set; }
...
}
我的问题:DataTemplate 有 ItemsSource = ViewModel.MySongs。但是“DownloadCommand”在 ViewModel 中。 我在 DataTemplate 中为我的按钮集绑定到 DownloadCommand 输入了什么?
【问题讨论】:
-
选择按钮->点击键盘上的
F4你会看到属性->搜索命令->点击文本框后的小灰色按钮,选择创建绑定->从绑定窗口中选择你的DownloadCommand-> 瞧