0

こんにちは皆さん、これは私の最初の質問ですので、はっきりと言いたいと思います。Style と Template を備えた ListBox を使用して、2 列スタイルのビューにします。

これは ListBoxItem のテンプレートです:

<DataTemplate x:Key="ItemDataTemplate">
        <Grid Height="29">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width=".3*" />
                <ColumnDefinition Width=".7*" />
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Name="txtBind1" Text="{Binding Codigo}"/>
            <TextBlock Grid.Column="1" Name="txtBind2" Text="{Binding Descripcion}"/>
        </Grid>            
    </DataTemplate>

<Style TargetType="ListBoxItem" x:Key="ListboxStretchStyle">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="ListBoxStyle" TargetType="ListBox">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <ScrollViewer>
                        <StackPanel VerticalAlignment="Top">
                            <Grid Height="30" Background="Gray">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="0.30*"/>
                                    <ColumnDefinition Width="0.70*" />
                                </Grid.ColumnDefinitions>
                                <Border BorderBrush="{StaticResource PhoneBackgroundBrush}" BorderThickness="1">
                                    <TextBlock Grid.Column="0" Text="{Binding CriterioActual.Descripcion}"/>
                                </Border>
                                <Border Grid.Column="1" BorderBrush="{StaticResource PhoneBackgroundBrush}" BorderThickness="1">
                                    <TextBlock Grid.Column="1" Text="Descripción"/>
                                </Border>
                            </Grid>
                            <ItemsPresenter/>
                        </StackPanel>
                    </ScrollViewer>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

そして、これはリストボックスです:

<ListBox Height="320" Margin="0,84,0,0" Name="ListaArticulos" VerticalAlignment="Top"
                Style="{StaticResource ListBoxStyle}"
                ItemTemplate="{StaticResource ItemDataTemplate}"
                ItemContainerStyle="{StaticResource ListboxStretchStyle}"
                ItemsSource="{Binding Articulos}">
            </ListBox>

これは結果です:

ここに画像の説明を入力

この時点で問題ないので、ListBox の SelectedItem に応じて ListBoxItem のテンプレートを変更する TemplateSelector を実装しました。したがって、同じテンプレートを TemplateSelector に入れましたが、グリッドの幅はストレッチではありません。

テンプレートセレクター:

<DataTemplate x:Key="MultiTemplate">
        <Views:ArticulosTemplateSelector Content="{Binding}" Filtro="{Binding ElementName=ComboCriterios, Path=SelectedItem, Mode=OneWay}">
            <Views:ArticulosTemplateSelector.FiltroCodigo>
                <DataTemplate>
                    <Grid Height="29" Background="Gray" HorizontalAlignment="Stretch">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width=".3*" />
                            <ColumnDefinition Width=".7*" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Name="txtBind1" HorizontalAlignment="Stretch" Text="{Binding Codigo}"/>
                        <TextBlock Grid.Column="1" Name="txtBind2" HorizontalAlignment="Stretch" Text="{Binding Descripcion}"/>
                    </Grid>
                </DataTemplate>
            </Views:ArticulosTemplateSelector.FiltroCodigo>
</DataTemplate>

これは更新された ListBox です。

<ListBox Height="320" Margin="0,84,0,0" Name="ListaArticulos" VerticalAlignment="Top"
                Style="{StaticResource ListBoxStyle}"
                ItemTemplate="{StaticResource MultiTemplate}"
                ItemContainerStyle="{StaticResource ListboxStretchStyle}"
                ItemsSource="{Binding Articulos}">
            </ListBox>

最終結果:

ここに画像の説明を入力

グリッドが伸びていません。誰か助けてください。感謝します。

4

2 に答える 2

0

Listbox TemplateSelector を 100% に設定すると問題が発生しました。これに対する私の解決策は、Listbox を LongListSelector に置き換えることでした。

于 2014-01-07T13:05:17.020 に答える