【问题标题】:Style doesn't apply to StackPanel items in ListView - Windows Universal样式不适用于 ListView 中的 StackPanel 项目 - Windows 通用
【发布时间】:2015-11-25 19:02:20
【问题描述】:

我创建了一个带有数据绑定的列表视图和一个“Itemstemplate”,它采用一个“Datatemplate”,其中我有一个 Stackpannel 但样式不适用于 stackpannel,stackpannel 中的文本块之间没有空格:

 <ListView Grid.Row="1" DataContext="{Binding Source={StaticResource ViewModel}}" ItemsSource="{Binding}" ScrollViewer.VerticalScrollBarVisibility="Visible">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" Background="Gray" >
                    <StackPanel.Resources>
                        <Style TargetType="TextBlock" x:Key="margintextblock">
                            <Setter Property="Margin" Value="10,0,0,0"/>
                        </Style>
                    </StackPanel.Resources>
                    <TextBlock Style="{StaticResource listviewtextblock}" Text="{Binding Path=Firstname}" Foreground="Gold"></TextBlock>
                    <TextBlock Style="{StaticResource listviewtextblock}" Text="{Binding Path=Lastname}" Foreground="Black"></TextBlock>
                    <TextBlock Style="{StaticResource listviewtextblock}" Text="{Binding Path=Id}" Foreground="OrangeRed"></TextBlock>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

那怎么了?

【问题讨论】:

    标签: c# wpf xaml margin datatemplate


    【解决方案1】:

    您必须删除 x:Key="margintextblock",因为这样该样式不会自动应用于 TextBlocks

    通过在样式上设置 x:Key 属性,您是在告诉 WPF 您只想在特定控件上显式引用该样式时使用该样式。

    看看this tutorial

    已编辑

    你还有另一个问题 - 你正在为你设置样式 TextBlocks Style="{StaticResource listviewtextblock}"

    在这种情况下,您要做的就是从 listviewtextblock 样式继承 StackPanel TextBlock 样式

    <StackPanel.Resources>
        <Style TargetType="TextBlock" BasedOn="{StaticResource listviewtextblock}">
             <Setter Property="Margin" Value="10,0,0,0"/>
         </Style>
     </StackPanel.Resources>
    

    并从 TextBlocks 中删除样式 Style="{StaticResource listviewtextblock}"

    你的代码应该是这样的

     <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Background="Gray" >
                        <StackPanel.Resources>
                            <Style TargetType="TextBlock" BasedOn="{StaticResource listviewtextblock}" >
                                <Setter Property="Margin" Value="10,0,0,0"/>
                            </Style>
                        </StackPanel.Resources>
                        <TextBlock Text="{Binding Path=Firstname}" Foreground="Gold"></TextBlock>
                        <TextBlock Text="{Binding Path=Lastname}" Foreground="Black"></TextBlock>
                        <TextBlock Text="{Binding Path=Id}" Foreground="OrangeRed"></TextBlock>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多