wpf 无法将“样式”类型的值添加到“UIElementCollection”类型的集合或字典中

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/24795517/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 12:09:53  来源:igfitidea点击:

A value of type 'Style' cannot be added to a collection or dictionary of type 'UIElementCollection'

c#wpfxaml

提问by Ekta

I have the following XAML code. I want alternate lines in my listview which will be populated dynamically though the code at run time. I'm using the following XAML code but it give error called Error8 A value of type 'Style' cannot be added to a collection or dictionary of type 'UIElementCollection'.

我有以下 XAML 代码。我希望我的列表视图中的备用行将在运行时通过代码动态填充。我正在使用以下 XAML 代码,但它给出了名为 Error8 的错误“样式”类型的值无法添加到“UIElementCollection”类型的集合或字典中。

 <ListView Grid.Column="1" Grid.Row="10" BorderBrush="#FFA8CC7B" Height="133" HorizontalAlignment="Left" Margin="0,0,0,93" Name="lstViewAppsList" VerticalAlignment="Top" Width="596"
              ItemContainerStyle="{StaticResource alternatingStyle}" AlternationCount="2">
        <ListView.View>
            <GridView>
                <GridViewColumn  Header="Apps" Width="150" />
                <GridViewColumn  Header="Package" Width="350" />
            </GridView>
        </ListView.View>
    </ListView>

    <Style x:Key="alternatingStyle" TargetType="{x:Type ListViewItem}">
        <Style.Triggers>
            <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                <Setter Property="BValue="LightSkyBlue"></Setter>
            </Trigger>
            <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                <Setter Property="Background" Value="LightGray"></Setter>
            </Trigger>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="Orange"/>
            </Trigger>
        </Style.Triggers>
    </Style>

回答by sa_ddam213

It needs to be in a ResourceDictionaryof some sort, you can add to the ListViewor the Window/Pageresources or even an external resource file

它需要ResourceDictionary某种形式的,您可以添加到ListViewWindow/Page资源甚至外部资源文件

<ListView.Resources>
   <Style x:Key="alternatingStyle" TargetType="{x:Type ListViewItem}">
       ......
   </Style>
<ListView.Resources>

So to add it to your example above

所以把它添加到你上面的例子中

<ListView Grid.Column="1" Grid.Row="10" BorderBrush="#FFA8CC7B" Height="133" HorizontalAlignment="Left" Margin="0,0,0,93" Name="lstViewAppsList" VerticalAlignment="Top" Width="596" AlternationCount="2">
    <ListView.Resources>
       <Style TargetType="{x:Type ListViewItem}">
           ......
       </Style>
    <ListView.Resources>
     <ListView.View>
         <GridView>
             <GridViewColumn  Header="Apps" Width="150" />
             <GridViewColumn  Header="Package" Width="350" />
         </GridView>
     </ListView.View>
</ListView>

回答by user3222026

You need to place this style in ResourceDictionary. If you are using , Place the style as follows,

您需要将此样式放在 ResourceDictionary 中。如果您正在使用,请按如下方式放置样式,

<Window.Resources>
<Style x:Key="alternatingStyle" TargetType="{x:Type ListViewItem}">
</Style>
</Window.Resources>

Regards, Riyaj Ahamed I

问候, 里亚杰·艾哈迈德一世