代码之家  ›  专栏  ›  技术社区  ›  Echilon Mafarnakus

WPF项模板不工作

  •  1
  • Echilon Mafarnakus  · 技术社区  · 15 年前

    我正试图得到一个 ItemsPanelTemplate 为A工作 ListBox . 这个 列表框 在A中使用 DataTemplate 我没有暗示 列表框 样式替代默认视觉样式。出于某种原因, 项目模板 我在指定控件(a WrapPanel )被忽略了, StackPanel 而是使用。

    这是整个模板,我只能假设我丢失了一些东西,导致了这一点。

    <DataTemplate x:Key="GroupLargeIconsTemplate" DataType="{x:Type Core:IGroup}">
        <ListBox ItemsSource="{Binding Children}" OverridesDefaultStyle="True">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel HorizontalAlignment="Left" VerticalAlignment="Top" IsItemsHost="True"  ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto"
                               Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}" />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <DataTemplate.Resources>
                        <conv:IconConverter x:Key="IconConverter"/>
                    </DataTemplate.Resources>
                    <StackPanel Margin="2" Width="100" Height="140">
                        <Image Source="{Binding Icon,Converter={StaticResource IconConverter},ConverterParameter=96}"/>
                        <TextBlock Text="{Binding Name}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </DataTemplate>
    
    2 回复  |  直到 12 年前
        1
  •  1
  •   Dabblernl    15 年前

    我的猜测是Wrappanel中的width属性使其表现为stackpanel。

        2
  •  0
  •   MikNik    12 年前

    奇怪的是,控件模板不应该覆盖显式指定的值,相反的情况出现在我的脑海中…… 也就是说,除非控件模板提供的面板“isitemshost”设置为true。然后忽略itemspanel。这可能是你的情况。

    推荐文章