2016-10-29 9 views
0

UWPでGridView生成アイテムのカスタムデータテンプレートを作成しました。ここではスクリーンショットです:ここではGridViewで生成されたアイテムのビヘイビアエラーUWPのデータテンプレート

enter image description here

は、XAMLコードは次のとおりです。その後

<DataTemplate x:Key="FileExplorer_FolderItem"> 
     <Grid x:Name="FileExplorer_Item" MaxWidth="0" MaxHeight="0" Margin="0" MinWidth="450" MinHeight="250" RequestedTheme="Dark"> 

      <Grid.RowDefinitions> 
       <RowDefinition/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 
      <Border x:Name="PathBorder" BorderThickness="2" Grid.RowSpan="2"> 
       <Border.BorderBrush> 
        <SolidColorBrush Color="{StaticResource Jet}"/> 
       </Border.BorderBrush> 
      </Border> 
      <Grid x:Name="Header" Grid.RowSpan="2"> 
       <Image x:Name="ThumbnailImage" Source="{Binding Thumb}" Stretch="UniformToFill"/> 
      </Grid> 
      <Grid x:Name="Footer" Grid.Row="1"> 
       <Grid.Background> 
        <SolidColorBrush Color="#FF343434"/> 
       </Grid.Background> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition/> 
        <ColumnDefinition Width="Auto"/> 
       </Grid.ColumnDefinitions> 
       <Grid x:Name="PathGrid"> 
        <Grid.RowDefinitions> 
         <RowDefinition/> 
         <RowDefinition/> 
        </Grid.RowDefinitions> 
        <TextBlock x:Name="Name" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Storage_item.DisplayName}" VerticalAlignment="Top" Margin="10,10,0,0" FontSize="15" LineHeight="20"/> 
        <TextBlock x:Name="Path" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Storage_item.Path}" VerticalAlignment="Top" Grid.Row="1" Margin="10,0,0,10" FontSize="13" LineHeight="16"/> 
       </Grid> 
       <Image x:Name="Logo" HorizontalAlignment="Center" Height="48" VerticalAlignment="Center" Width="48" Grid.Column="1" Source="Images/Folder48.png" Stretch="UniformToFill"> 



       </Image> 
      </Grid> 
     </Grid> 
    </DataTemplate> 

、私は私の中にいくつかの行動を作成するためのGitHubから "MicrosoftがUWPためBehaviors.Managed" を設置しましたテンプレート。 &ドロップ "ChangePropertyAction"を私のテンプレートのイメージコントロールにドラッグします。ただし、このエラーはXAMLデザイナーで発生しました:

'EventTriggerBehavior'は直接コンテンツをサポートしていません。 XAMLデザイナーの

画像:Imageコントロールの

enter image description here

とXAMLコード:

<Image x:Name="Logo" HorizontalAlignment="Center" Height="48" VerticalAlignment="Center" Width="48" Grid.Column="1" Source="Images/Folder48.png" Stretch="UniformToFill"> 
        <Interactivity:Interaction.Behaviors> 
         <Core:EventTriggerBehavior EventName="PointerPressed"> 
          <Core:ChangePropertyAction/> 
         </Core:EventTriggerBehavior> 
        </Interactivity:Interaction.Behaviors> 

       </Image> 

XAMLデザイナーは、このエラーを与える、なぜ私が解決することはできません。どうすれば修正できますか?

ありがとうございます。私たちの議論に基づいて

+0

この場合、 'ChangePropertyAction'とは何ですか? –

+0

@TóthTiborエラーのために動作を完全に完了できません。しかし、私は、生成されたアイテムがストレージファイルで、動作の ".mp4"ファイルであれば、テンプレートのビデオファイルアイコンでフォルダアイコンを変更することを計画しています。 –

+0

このシナリオではなぜ行動が必要ですか?あなたの説明に基づいて、なぜ私はあなたのケースに適している行動をせずにコンバータを使用すると思いますか? –

答えて

0

、そして私がお届けしました最後の答えは、ここでは、このシナリオではConverterの使用方法を示すためのデモです:背後

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.Resources> 
     <local:ThumbnailToImageConverter x:Key="cvt" /> 
     <local:MusicTypeConverter x:Key="typecvt" /> 
    </Grid.Resources> 
    <GridView x:Name="gridView"> 
     <GridView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <Image Source="{Binding Thumbnail, Converter={StaticResource cvt}}" Stretch="None" /> 
        <TextBlock Text="{Binding Name}" Margin="0,5" /> 
        <Image Source="{Binding FileType, Converter={StaticResource typecvt}}" Stretch="None" /> 
       </StackPanel> 
      </DataTemplate> 
     </GridView.ItemTemplate> 
    </GridView> 
</Grid> 

コード:

private ObservableCollection<Model> Collection = new ObservableCollection<Model>(); 

protected override async void OnNavigatedTo(NavigationEventArgs e) 
{ 
    var files = await KnownFolders.MusicLibrary.GetFilesAsync(); 
    foreach (var file in files) 
    { 
     var thumbnail = await file.GetThumbnailAsync(ThumbnailMode.PicturesView, 100); 

     Collection.Add(new Model { Name = file.Name, Thumbnail = thumbnail, FileType = file.FileType }); 
    } 
    gridView.ItemsSource = Collection; 
} 

データモデル:

public class Model 
{ 
    public StorageItemThumbnail Thumbnail { get; set; } 
    public string Name { get; set; } 

    public string FileType { get; set; } 
} 

MusicTypeConverter

public class MusicTypeConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     if (value != null) 
     { 
      if ((string)value == ".mp4") 
       return "Assets/Music.PNG"; 
     } 
     return "Assets/Video.PNG"; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

ThumbnailToImageConverterの部分については、最後の質問にコードを掲載しました。

新しいMusicTypeConverterでは、必要なファイルタイプとアイコン画像のパスを追加できます。

関連する問題