0
각 항목을 구분 기호로 구분하여 사용자 지정 ListBox를 만들었습니다. 나는 별난 문제를보고 있었다. 구분 기호의 두께가 목록 항목에서 일정하지 않았습니다. 그런 다음 stackoverflow의 제안 뒤에 UseLayoutRounding 속성을 사용했습니다. 하지만 지금은 다른 문제가 있습니다. 일부 기계에는 구분 기호가 표시되지 않습니다. 세퍼레이터는 일부 컴퓨터에 표시되거나 표시되지 않습니다.일부 컴퓨터에서는 WPF 목록 구분 기호가 표시되지 않습니다.
아래는 사용자 정의 목록 상자의 소스 코드입니다.
<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" UseLayoutRounding="True" 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; }
}
}
도움이 되겠습니다.
답장을 보내 주셔서 감사합니다. 귀하의 제안에 따라 확인하겠습니다. – user3863360