我有一个问题,而不是问题。 我在XAML中有我的listView:
<ListView Margin="25,10,25,10" Name="BookListView" ItemsSource="{Binding Books}" DockPanel.Dock="Top">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Name}"/>
<StackPanel>
<TextBlock Text="Number: " />
<TextBlock Text="{Binding Number}" />
</StackPanel>
<Button Content="Read" Visibility="Hidden" Name="ReadButton" Command="{Binding ReadCommand}"/>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=TemplatedParent}}" Value="True">
<Setter TargetName="ReadButton" Property="Visibility" Value="Visible"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
以下是我的DataContext:
public MainWindow()
{
InitializeComponent();
DataContext = new BookListViewModel();
}
我的listView的itemsSource绑定到我viewModel中名为“Book”的元素的observableCollection中,一切正常(在这段代码中,我删除了指定窗口外观的所有代码)。
我的问题是,我的列表中的每个元素都包含一个按钮,当单击元素时会显示出来。如果我像在此代码中所做的那样绑定我的命令,应用程序将期望我的ReadCommand在Book类代码中,这违反了我一直认为的MVVM模式。
因此,我的问题是 - 在MVVM模式中,这种解决方案是否可接受?如果不行,那么如何从在listView中绑定observableList返回到在我的按钮中绑定viewModel?