ListView는 Windows 탐색기보기 (아이콘 + 세부 정보)처럼 보이며 ViewModel 어딘가에있는 목록에 바인딩되어 있습니다.ListView : 리소스 사전에서 ItemsPanelTemplate을 정의하십시오.
내 목표는 언제든지 탐색기보기 또는 클래식보기를 전환 할 수 있도록하는 것입니다.
정확하게 ListView.ItemsPanel
필드에 정확하게 레이아웃을 표시하는 작업을 수행하는 ItemsPanelTemplate
을 정의 할 수 있습니다. 이제는 여러 뷰에서 사용할 수 있도록 리소스에서이를 정의하고 싶습니다. 특히 하나의 컨트롤에서 사용자는 탐색기 뷰 또는 클래식 목록 뷰 중 하나를 선택해야합니다. 목록)
어떻게 했습니까? 어떤 ItemsPanelTemplate
내 ResourceDictionary
정의 할 수 없습니다 및 DataTemplate
정의하는 경우 호환되지 않습니다 (그 동안 순수 로직, ItemsPanelTemplate
상속해야합니다 DataTemplate
에서 상속해야하지만 실제로 그렇게 보이지 않는). 실제 목록
코드 : ...
어떤 아이디어
<ListView SelectionMode="Single"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Bottom"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ItemsSource="{Binding ListUserApps,
UpdateSourceTrigger=PropertyChanged}"
SelectedIndex="{Binding SelectedUserApp, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Background="White">
<ListView.ItemsPanel>
<ItemsPanelTemplate >
<WrapPanel Width="{Binding (FrameworkElement.ActualWidth),
RelativeSource={RelativeSource
AncestorType=ScrollContentPresenter}}"
ItemWidth="{Binding (ListView.View).ItemWidth,
RelativeSource={RelativeSource AncestorType=ListView}}"
ItemHeight="{Binding (ListView.View).ItemHeight,
RelativeSource={RelativeSource AncestorType=ListView}}" />
<!--MinWidth="{Binding ItemWidth,
RelativeSource={RelativeSource Self}}"-->
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="Auto" Width="150">
<Image Source="{Binding Path=Appli.AppType, Converter={StaticResource TypeToIconConverter}}" Margin="5"
Height="50" Width="50"/>
<StackPanel VerticalAlignment="Center" Width="90">
<TextBlock Text="{Binding Path=Appli.AppName}"
FontSize="13" HorizontalAlignment="Left" TextWrapping="WrapWithOverflow"
Margin="0,0,0,1" />
<TextBlock Text="{Binding Path=Appli.AppType}" FontSize="9"
HorizontalAlignment="Left" Margin="0,0,0,1" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
정적 자원에 ItemTemplate
유지는 쉽게 할 수 있었지만 지금은 ItemsPanelTemplate
에 아무것도 할 수 없습니다 ? 가능한 경우 코드 숨김을 사용하지 않으려 고 MVVM을 사용하고 있습니다.
감사합니다. 전체 ListView의 스타일을 생각하지 못했습니다. DataStateBehavior를 살펴 보겠습니다. 다시 한번 감사드립니다 – Damascus
또 다른 관련 질문 : 미리 정의 된 스타일로'ListView.GroupStyle'을 정의하는 방법을 알 수 없습니다. 그것은 읽기 전용 속성이되어야하고 그것을 정의하는 방법을 모르겠다. 어떤 생각? – Damascus