Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#和WPF创建自定义ListBoxItem?_C#_Wpf_Wpf Controls - Fatal编程技术网

如何使用C#和WPF创建自定义ListBoxItem?

如何使用C#和WPF创建自定义ListBoxItem?,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我正在学习C#和WPF。现在我想制作一个定制的ListBoxItem。用我自己的风格。包含一些文本块和图像。 我如何做到这一点 我试图从ListBoxItem派生一个类,但这不起作用。 我还使用ControleTemplate创建了一个样式,但我不知道如何更改模板中TextBlock的Text属性 <Style TargetType="ListViewItem"> <Setter Property="Background" Val

我正在学习C#和WPF。现在我想制作一个定制的ListBoxItem。用我自己的风格。包含一些文本块和图像。 我如何做到这一点

我试图从ListBoxItem派生一个类,但这不起作用。 我还使用ControleTemplate创建了一个样式,但我不知道如何更改模板中TextBlock的Text属性

<Style TargetType="ListViewItem">            
            <Setter Property="Background" Value="White"/>
            <Setter Property="Height" Value="75"/>
            <Setter Property="Template">     
                <Setter.Value>
                    <ControlTemplate x:Name="test" TargetType="{x:Type ListViewItem}">
                        <Grid Background="{TemplateBinding Background}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Margin="0,2">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="100"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="25"/>
                                <RowDefinition Height="25"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>

                            <StackPanel Grid.Column="0" Grid.RowSpan="3" VerticalAlignment="Center" HorizontalAlignment="Center" Width="80" Height="{TemplateBinding Height}">
                                <StackPanel.Background>
                                    <ImageBrush ImageSource="media/pictures/noImage.png"/>
                                </StackPanel.Background>
                            </StackPanel>

                            <TextBlock x:Name="lbl_Heading" Text="HowToAccessThisProperty" Grid.Column="1" Grid.Row="0" FontSize="14" FontWeight="Bold" VerticalAlignment="Center"/>
                            <TextBlock Name="lbl_Description" Text="HowToAccessThisProperty" Grid.Column="1" Grid.Row="1" FontSize="12" VerticalAlignment="Center"/>
                            <TextBlock Name="lbl_FurtherInfo" Text="HowToAccessThisProperty" Grid.Column="1" Grid.Row="2" FontSize="10" VerticalAlignment="Center"/>

                            <ContentPresenter/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>


谢谢:)

查看MSDN请更详细地解释您试图对ListView项执行的操作。在WPF中,99%的时间我们通过listview/listbox/的
ItemTemplate
属性(而不是控件的模板)使用ContentTemplate自定义listview/listbox/等项。那些文本块的文本应该来自哪里?是否确实要消除默认的突出显示行为?@EdPlunkett我正在尝试创建一个ListView项目,左侧有一张图片、一个标题和另外两行,其中显示有关该项目的更多信息,双击该项目可以打开该信息。文本和图像都来自SQL server。实际上,我不想消除默认的突出显示行为。你能举一个关于ContentTemplate的简短例子吗?听起来很像ContentTemplate。容易的。现在:如何填充此ListView?你在里面放什么,怎么放?“SQL”不是答案。答案可能是:“我正在将ItemsSource绑定到包含此item类(shows code)的此类(shows code)的集合属性(shows code)”,或者“我正在使用这些列(显示DataTable中每列的名称和类型)将此DataTable分配给代码隐藏中的ItemsSource”。请将此信息添加到您的问题中。在评论中它将是不可读的。谢谢