2016-04-09 118 views
0

我試圖在ContentPresenter中顯示選定的列表視圖項目。在內容展示器中顯示選定的ListView項目

ListView從播放器s ViewModel填充。提供PlayerViewModel的項目。

現在我想在ContentPresenter中的ListView之外顯示選定的PlayerViewModel。在設計視圖中,僅顯示了內容綁定類型。像:PlayersViewModel.CurrentPlayer

如何使ContentPresenter的工作方式與ListView.ItemTemplate相同?

在此先感謝。

<ListView ItemsSource="{x:Bind PlayersViewModel.Players}" SelectedIndex="{x:Bind PlayersViewModel.Index}" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2">    
     <ListView.ItemTemplate> 
      <DataTemplate x:DataType="viewModels:PlayerViewModel"> 
       <Viewbox> 
        <StackPanel BorderBrush="Black" BorderThickness="1"> 
         <TextBlock Text="{x:Bind Name}" /> 
         <TextBlock Text="{x:Bind Score, Mode=TwoWay}" /> 
        </StackPanel> 
       </Viewbox>      
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
    <ContentPresenter Grid.Row="0" Grid.Column="1" Content="{x:Bind PlayersViewModel.CurrentPlayer}"> 
     <ContentPresenter.Resources> 
      <DataTemplate x:Key="dataTemplateCurrentPlayer" x:DataType="viewModels:PlayerViewModel"> 
       <StackPanel BorderBrush="Black" BorderThickness="1"> 
        <TextBlock Text="{x:Bind Name}" /> 
        <TextBlock Text="{x:Bind Score, Mode=TwoWay}" /> 
       </StackPanel> 
      </DataTemplate> 
     </ContentPresenter.Resources>    
    </ContentPresenter> 
+0

爲什麼你必須在Cont中顯示entPresenter?任何原因? – Archana

+0

您是否擁有PlayersViewModel中的CurrentPlayer屬性?你運行時是否得到任何綁定異常? – Archana

+0

是CurrentPlayer屬性在PlayersViewModel中。 uccurs沒有綁定異常。我想在ContentPresenter中顯示所選項目的更多詳細信息。如果我可以用不同的控制來做到這一點,那就好了。 – Rene

回答

0
<UserControl x:Class="App1.MyUserControl1" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:local="using:App1" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      mc:Ignorable="d" 
      d:DesignHeight="300" 
      d:DesignWidth="400"> 

    <UserControl.Resources> 
    <DataTemplate x:DataType="viewModels:PlayerViewModel" 
        x:Key="PlayerTemplate"> 
     <Viewbox> 
     <StackPanel BorderBrush="Black" 
        BorderThickness="1"> 
      <TextBlock Text="{x:Bind Name}" /> 
      <TextBlock Text="{x:Bind Score, Mode=TwoWay}" /> 
     </StackPanel> 
     </Viewbox> 
    </DataTemplate> 
    </UserControl.Resources> 
    <Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="0.5*" /> 
     <ColumnDefinition Width="0.5*" /> 
    </Grid.ColumnDefinitions> 
    <ListView ItemsSource="{x:Bind PlayersViewModel.Players}" 
       SelectedIndex="{x:Bind PlayersViewModel.Index}" 
       ItemTemplate="{StaticResource PlayerTemplate}" /> 

    <ContentControl Grid.Column="1" 
        Content="{x:Bind PlayersViewModel.CurrentPlayer}" 
        ContentTemplate="{StaticResource PlayerTemplate}" /> 
    </Grid> 
</UserControl> 
0

您可以使用ListView的頁腳模板,以顯示所選項目的詳細信息

<ListView ItemsSource="{x:Bind PlayersViewModel.Players}" SelectedIndex="{x:Bind PlayersViewModel.Index}" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2">    
     <ListView.ItemTemplate> 
      <DataTemplate x:DataType="viewModels:PlayerViewModel"> 
       <Viewbox> 
        <StackPanel BorderBrush="Black" BorderThickness="1"> 
         <TextBlock Text="{x:Bind Name}" /> 
         <TextBlock Text="{x:Bind Score, Mode=TwoWay}" /> 
        </StackPanel> 
       </Viewbox>      
      </DataTemplate> 
     </ListView.ItemTemplate> 
<ListView.FooterTemplate> 

     <DataTemplatex:DataType="viewModels:PlayerViewModel"> 
      <StackPanel BorderBrush="Black" BorderThickness="1"> 
       <TextBlock Text="{x:Bind PlayersViewModel.CurrentPlayer.Name}" /> 
       <TextBlock Text="{x:Bind PlayersViewModel.CurrentPlayer.Score, Mode=TwoWay}" /> 
      </StackPanel> 
     </DataTemplate> 
</ListView.FooterTemplate> 
</ListView> 

或者另一種方式是,你可以只使用StackPanel的

<StackPanel BorderBrush="Black" BorderThickness="1"> 
        <TextBlock Text="{x:Bind PlayersViewModel.CurrentPlayer.Name}" /> 
        <TextBlock Text="{x:Bind PlayersViewModel.CurrentPlayer.Score, Mode=TwoWay}" /> 
       </StackPanel> 

希望這個作品..