2017-04-21 36 views
0
ListView項

你好,我有以下的ListView:數據綁定MediaPlaybackItem在DataTemplate中

<ListView x:Name="SongList" HorizontalAlignment="Left" Visibility="Visible" Height="615" Background="White" 
      Opacity="0.5" SelectedValue="selectedFile" 
      ItemsSource="{Binding MediaModels.MediaPlaybackItemsList , UpdateSourceTrigger=PropertyChanged}" 
      Margin="986,105,0,0" VerticalAlignment="Top" Width="294"> 

所以在我的ItemSource我綁定MediaPlaybackItem .Thats精細一切的列表做工不錯,除了我不知道如何將藝術家和綁定標題爲每個項目的MediaPlayback到的DataTemplate:

<DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <Border BorderBrush="#404040" BorderThickness="0,0,0,2" HorizontalAlignment="Stretch" 
           Width="282" Height="80"> 
          <Grid HorizontalAlignment="Left"> 
           <TextBlock Text="{Binding GetDisplayProperties().MusicProperties.Artist}" TextWrapping="WrapWholeWords" 
              Margin="82,10,10,0" /> 
           <Grid Margin="0,0,-140,0"> 
            <Image Source="Images/Album.png" Width="70" Height="70" Margin="0,0,350,0" /> 
           </Grid> 
          </Grid> 
         </Border> 
        </StackPanel> 
       </DataTemplate> 

MediaPlaybacKItem類有方法GetDisplayProperties().MusicProperties.Artist/Title/等返回string。我只能通過這個GetDisplayProperties方法訪問這些properties,那麼我怎樣才能在數據模板中綁定它的結果呢?

回答

0

您不能將方法綁定到像這樣的屬性。相反,請在您的MediaPlaybackItem中公開一個返回MusicProperties對象的屬性。

MediaPlaybackItem類

public MusicPropertiesType MusicProperties 
{ 
    get 
    { 
    return this.GetDisplayProperties().MusicProperties; 
    } 
} 

現在可以綁定,爲您的ItemTemplate

XAML

<DataTemplate> 
    <StackPanel Orientation="Horizontal"> 
     <Border BorderBrush="#404040" BorderThickness="0,0,0,2" HorizontalAlignment="Stretch" 
       Width="282" Height="80"> 
      <Grid HorizontalAlignment="Left"> 
       <TextBlock Text="{Binding MusicProperties.Artist}" TextWrapping="WrapWholeWords" 
          Margin="82,10,10,0" /> 
       <Grid Margin="0,0,-140,0"> 
        <Image Source="Images/Album.png" Width="70" Height="70" Margin="0,0,350,0" /> 
       </Grid> 
      </Grid> 
     </Border> 
    </StackPanel> 
</DataTemplate> 
+0

MediaPlaybackItem是UWP庫(不是我自己的類)和c#犯規支持屬性擴展,所以我不能使用的解決方案 –

+1

你可能想在你的應用程序中添加'ViewModel'層。這就是你應該綁定你的'View'的地方。 – janonimus