NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
ORRNY99
Člen
Avatar
ORRNY99:14.6.2016 19:39

Ahoj lidi,
pracuji na takovým malým "projektíku" a potřeboval bych trochu poradit. Neví někdo jak, by se dal udělat ListBox s "rozšiřující libovolnou položkou". Myslím si že obrázek napoví více. Díky moc.

Když tak přikládám zdroják co jsem teď napsal: Test ListBoxu ke stažení

<ListView x:Name="ListViewData"
                 ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                 VirtualizingStackPanel.VirtualizationMode="Recycling"
                 VirtualizingStackPanel.IsVirtualizing="True"
                 IsSynchronizedWithCurrentItem="True"
                 SelectedItem="{Binding SelectedItemListView}"
                 ItemsSource="{Binding EmployeesDataList}" Background="{x:Null}" BorderBrush="{x:Null}" >
            <ie:Interaction.Triggers >
                <ie:EventTrigger EventName="SelectionChanged">
                    <ie:InvokeCommandAction Command="{Binding SelectedItemCommand}"
            CommandParameter="{Binding Path=SelectedItem, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"/>
                </ie:EventTrigger>
            </ie:Interaction.Triggers>
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel VirtualizingPanel.IsVirtualizing="True" Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <!-- ItemContainerStyle -->
            <ListView.ItemContainerStyle>

                <Style TargetType="{x:Type ListViewItem}">

                    <Setter Property="Template">

                        <Setter.Value>
                            <ControlTemplate TargetType="ListViewItem">
                                <Grid  Focusable="False"  >
                                    <Rectangle  Focusable="False"  Fill="{TemplateBinding Background}" />
                                    <ContentPresenter Margin="3" />
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>

                    </Setter>

                    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver"
                    Value="True">
                            <Setter Property="Background"
                    Value="#00000000" />
                        </Trigger>
                        <Trigger Property="IsSelected"
                    Value="True">
                            <Setter Property="Background"
                    Value="#00ADD8E6" />
                        </Trigger>


                    </Style.Triggers>
                </Style>
            </ListView.ItemContainerStyle>
            <!-- ItemTemplate -->
            <ListView.ItemTemplate>
                <DataTemplate>
                    <DataTemplate.Resources>
                        <!-- In your resources section of the XAML -->
                        <!--<BooleanToVisibilityConverter x:Key="BoolToVis" />-->
                        <DropShadowEffect x:Key="z-depth4" BlurRadius="25" ShadowDepth="8" Direction="270" Color="#BBBBBB"/>
                    </DataTemplate.Resources>
                    <Grid Effect="{StaticResource z-depth4}" d:DesignWidth="250" d:DesignHeight="100" Width="250" Height="100" Background="{Binding Colors}" >
                        <TextBlock x:Name="txtId" TextOptions.TextFormattingMode="Display" RenderOptions.BitmapScalingMode="NearestNeighbor" Margin="39,25,0,0" Text="{Binding Id}" FontSize="33.333" HorizontalAlignment="Left" Width="Auto" Foreground="White" VerticalAlignment="Top" Panel.ZIndex="3">
                            <TextBlock.Effect>
                                <DropShadowEffect ShadowDepth="4"
                        Direction="330"
                        Color="Black"
                        Opacity="0.5"
                        BlurRadius="4"/>
                            </TextBlock.Effect>
                        </TextBlock>

                        <Rectangle x:Name="Rectangle2" HorizontalAlignment="Stretch" Height="Auto" VerticalAlignment="Stretch" Width="Auto" Panel.ZIndex="4" Fill="#00000000" Margin="0,0,0,1">
                        </Rectangle>

                        <Grid x:Name="pathSelected" HorizontalAlignment="Left" Width="30" Height="30" VerticalAlignment="Top" Margin="71,0,0,0" Visibility="Hidden" Panel.ZIndex="3">
                            <Polygon x:Name="checkPoly" Points="0,0 29,29 29,0 0,0" Stroke="Purple" StrokeThickness="0" Width="30" Height="29"
                                        VerticalAlignment="Top" HorizontalAlignment="Right" Fill="Red" />
                            <Path Stroke="White" Data="M 6,6 L 9, 9 L 16,2" StrokeThickness="2"
                                        VerticalAlignment="Top" HorizontalAlignment="Right" Panel.ZIndex="1" Margin="0,3.25,2.75,0" />

                        </Grid>

                        <!--<Path x:Name="pathSelected" Stroke="White" Data="M 6,6 L 9, 9 L 16,2" StrokeThickness="2" Margin="37,36,0,0"
                                      VerticalAlignment="Top" HorizontalAlignment="Left" Height="25" Stretch="Fill" Width="25" Panel.ZIndex="3" Visibility="Visible" />-->
                        <TextBlock TextOptions.TextFormattingMode="Display" RenderOptions.BitmapScalingMode="HighQuality" TextTrimming="CharacterEllipsis" x:Name="txtTitle" HorizontalAlignment="Stretch" Margin="112,10,10,0" TextWrapping="Wrap" Text="{Binding Title}" VerticalAlignment="Top" Height="23" Width="Auto" FontSize="17.333"/>
                        <TextBlock TextOptions.TextFormattingMode="Display" RenderOptions.BitmapScalingMode="HighQuality" TextTrimming="CharacterEllipsis" x:Name="txtName" Margin="112,43,0,0" TextWrapping="Wrap" Text="{Binding Name}" VerticalAlignment="Top" Height="Auto" Width="128" HorizontalAlignment="Left"/>
                        <Rectangle x:Name="Rectangle1"  HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" Panel.ZIndex="2" Fill="#7F143EB0" Margin="0,0,-4.5,0" Visibility="Hidden"/>

                    </Grid>
                    <DataTemplate.Triggers>
                        <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorLevel=1, AncestorType={x:Type ListViewItem}, Mode=FindAncestor}}" Value="True">
                            <Setter TargetName="pathSelected" Property="Visibility" Value="Visible"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorLevel=1, AncestorType={x:Type ListViewItem}, Mode=FindAncestor}}" Value="True">
                            <Setter TargetName="Rectangle1" Property="Visibility" Value="Visible"/>
                        </DataTrigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
 
Odpovědět
14.6.2016 19:39
Avatar
Lako
Člen
Avatar
Odpovídá na ORRNY99
Lako:15.6.2016 20:11

Myslím že hledáš přesně tohle: http://stackoverflow.com/…-if-selected

 
Nahoru Odpovědět
15.6.2016 20:11
Avatar
ORRNY99
Člen
Avatar
Odpovídá na Lako
ORRNY99:16.6.2016 20:19

Změnu DataTemplatu jsem už zkoušel a požadovaného efektu jsem nedocílil. Myslím si, že to je hlubší problém a změna DataTemplatu tady asi nepomůže. Jinak díky za radu.

 
Nahoru Odpovědět
16.6.2016 20:19
Avatar
Lako
Člen
Avatar
Odpovídá na ORRNY99
Lako:16.6.2016 23:12

A změnilo ti to ten datatemplate? Jestli jo, tak to stačí už ho jenom upravit, jestli na, tak bych se zaměřil na to.
Ten postup vypadá dost přímočaře... Nebo jaký hlubší problém máš na mysli?

(ještě mě napadlo - mluvíš o listboxu, ale máš tam listview - nemá třeba listview nějaké omezení, že musí být všechny prvky stejné?)

 
Nahoru Odpovědět
16.6.2016 23:12
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na ORRNY99
Petr Nymsa:16.6.2016 23:20

Myslím si, že DataTemplate k tomu postačí. Vyrobil bych template pro "vybraný prvek" a ten by v sobě měl požadovaný grid s detailem těch položek -> pak už by stačilo jen správně napojit nějaký ViewModel a správně udělat "Bindnig"

Nahoru Odpovědět
16.6.2016 23:20
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.