我创建了一个自定义列表框,其中每个项目均由分隔符分隔。但我看到了奇怪的问题。列表项之间的分隔符的厚度不是恒定的。如果我改变列表框的位置,它会改变,如下所示列表框图像 https://i.stack.imgur.com/uKt8n.png.
下面是自定义列表框的源代码。
<Window x:Class="CustListBox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CustListBox"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:Manager x:Key="manager"/>
<Style x:Key="LstStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<StackPanel>
<ContentPresenter/>
<Separator Foreground="Gray"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<ListBox Name="CustListBox" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Source={StaticResource manager}, Path=UserList}" ItemContainerStyle="{Binding Source={StaticResource LstStyle}}" Margin="26,17,271,27">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=FirstName}"/>
<TextBlock Text="{Binding Path=SecondName}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<ListBox Height="278" HorizontalAlignment="Left" Margin="264,16,0,0" Name="listBox1" VerticalAlignment="Top" Width="218" ItemsSource="{Binding Source={StaticResource manager}, Path=Names}" ItemContainerStyle="{Binding Source={StaticResource LstStyle}}"/>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CustListBox
{
class Manager : PropertyChangeNotifier
{
public List<UserDetails> UserList { get; set; }
private int myVar;
public int MyProperty
{
get { return myVar; }
set { myVar = value; }
}
public List<string> Names { get; set; }
public Manager()
{
UserList = new List<UserDetails>(5);
Names = new List<string>();
UserDetails usrDtls = new UserDetails();
usrDtls.FirstName = "First Name";
usrDtls.SecondName = "Second Name";
UserList.Add(usrDtls);
UserList.Add(usrDtls);
UserList.Add(usrDtls);
UserList.Add(usrDtls);
UserList.Add(usrDtls);
UserList.Add(usrDtls);
UserList.Add(usrDtls);
UserList.Add(usrDtls);
Names.Add("Test Name");
Names.Add("Test Name");
Names.Add("Test Name");
Names.Add("Test Name");
Names.Add("Test Name");
Names.Add("Test Name");
Names.Add("Test Name");
Names.Add("Test Name");
Names.Add("Test Name");
Names.Add("Test Name");
}
}
}
namespace CustListBox
{
class UserDetails
{
public string FirstName { get; set; }
public string SecondName { get; set; }
}
}
任何帮助将不胜感激。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)