現在、RSSフィードを視覚化しようとしています。私は2つのオブジェクト:FeedChannel
とFeedElement
を作成しました。 FeedChannel
は、FeedElement
を含むことがあります。WPF MVVM項目をクリックした後にGUIを変更します
<Grid>
<ScrollViewer>
<ListBox ItemsSource="{Binding Feed, IsAsync=True}" x:Name="ListFeed">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<i:InvokeCommandAction Command="{Binding ChannelClickCommand}" CommandParameter="{Binding ElementName=ListFeed, Path=SelectedItem}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Margin="0,0,10,0" Source="{Binding ImageLink}" VerticalAlignment="Top" Width="100" Height="50"/>
<StackPanel Grid.Column="1" Orientation="Vertical">
<TextBlock Text="{Binding Title}" FontWeight="ExtraBold" />
<TextBlock Text="{Binding Description}" />
<TextBlock Text="{Binding PublicationDate}" HorizontalAlignment="Right" FontWeight="Thin"/>
</StackPanel>
</Grid>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
</Grid>
ChannelClickCommand
ActiveChannel
プロパティにクリックされたチャンネルを保存します:
このフィードは次のように表示される複数のチャネルを有していてもよいです。私の見解では、ActiveChannel
にアクセスしてFeedElement
を表示する必要があります。 (!とチャンネルのみ):すべての非常に簡単に行うのですが、私は次のように正しいアプローチ見つけるのに苦労
は、ユーザーが最初にすべてのチャンネルを見ていることを考えると、彼は今、それらのいずれかとをクリックしてすべての要素が表示されます(チャンネルは表示されなくなります)。彼は、ボタンをクリックしたり、同様の方法ですべてのチャンネルを表示することができます。
私はStackpanelsを使用して、必要なものに応じて表示/折りたたみを行うことを考えましたが、この問題の解決策はありますか?
今日は試してみます。ありがとうございました! – Kohnarik