0
관찰 가능 목록을 목록 상자 /보기와 동기화하려고하면이 문제가 발생합니다. 첫 번째 항목을 X 번 (목록의 전체 총 레코드 수) 표시합니다. 하지만 ' t 변수의 여기WPF ListBox/View 데이터 바인딩 이상한 결과
는 XAML
<ListBox x:Name="PostListView" BorderThickness="0"
MinHeight="300"
Background="{x:Null}"
BorderBrush="{x:Null}"
Foreground="{x:Null}"
VerticalContentAlignment="Top"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
DataContext="{Binding Source={StaticResource PostListData}}"
ItemsSource="{Binding Mode=OneWay}"
IsSynchronizedWithCurrentItem="True"
MinWidth="332" SelectedIndex="0" SelectionMode="Extended" AlternationCount="1">
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel x:Name="SinglePost" VerticalAlignment="Top" ScrollViewer.CanContentScroll="True" ClipToBounds="True" Width="333" Height="70" d:LayoutOverrides="VerticalAlignment" d:IsEffectDisabled="True">
<DockPanel.DataContext>
<local:PostList/>
</DockPanel.DataContext>
<StackPanel x:Name="AvatarNickHolder" Width="60">
<Label x:Name="Nick" HorizontalAlignment="Center" Margin="5,0" VerticalAlignment="Top" Height="15" Content="{Binding Path=pUsername, FallbackValue=pUsername}" FontFamily="Arial" FontSize="10.667" Padding="5,0"/>
<Image x:Name="Avatar" HorizontalAlignment="Center" Margin="5,0,5,5" VerticalAlignment="Top" Width="50" Height="50" IsHitTestVisible="False" Source="1045443356IMG_0972.jpg" Stretch="UniformToFill"/>
</StackPanel>
<TextBlock x:Name="userPostText" Margin="0,0,5,0" VerticalAlignment="Center" FontSize="10.667" Text="{Binding Path=pMsg, FallbackValue=pMsg}" TextWrapping="Wrap"/>
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
이며, 여기에 ovservable리스트 클래스를
public class PostList : ObservableCollection<PostData>
{
public PostList()
: base()
{
Add(new PostData("this is test msg", "Cather", "1045443356IMG_0972.jpg"));
Add(new PostData("this is test msg1", "t1", "1045443356IMG_0972.jpg"));
Add(new PostData("this is test msg2", "t2", "1045443356IMG_0972.jpg"));
Add(new PostData("this is test msg3", "t3", "1045443356IMG_0972.jpg"));
Add(new PostData("this is test msg4", "t4", "1045443356IMG_0972.jpg"));
Add(new PostData("this is test msg5", "t5", "1045443356IMG_0972.jpg"));
// Add(new PostData("Isak", "Dinesen"));
// Add(new PostData("Victor", "Hugo"));
// Add(new PostData("Jules", "Verne"));
}
}
public class PostData
{
private string Username;
private string Msg;
private string Avatar;
private string LinkAttached;
private string PicAttached;
private string VideoAttached;
public PostData(string msg ,string username, string avatar=null, string link=null,string pic=null ,string video=null)
{
this.Username = username;
this.Msg = msg;
this.Avatar = avatar;
this.LinkAttached = link;
this.PicAttached = pic;
this.VideoAttached = video;
}
public string pMsg
{
get { return Msg; }
set { Msg = value; }
}
public string pUsername
{
get { return Username; }
set { Username = value; }
}
public string pAvatar
{
get { return Avatar; }
set { Avatar = value; }
}
public string pLink
{
get { return LinkAttached; }
set { LinkAttached = value; }
}
public string pPic
{
get { return PicAttached; }
set { PicAttached = value; }
}
public string pVideo
{
get { return VideoAttached; }
set { VideoAttached = value; }
}
}
모든 ID입니다 변경 eas?
좋은 답변을 제거하십시오, 감사합니다! – Aviatrix
그리고 지금은 동기화되지 않습니다. 동적으로 항목을 추가하면 나타나지 않습니다. (초보자 : ( – Aviatrix
@avia 아마도 컨트롤이 바인딩 된 PostList라고 생각하는 항목을 추가하고있을 것입니다 반대하지만 사실은 같은 인스턴스가 아닙니다. 나는 모든 것이 어떻게 작동 하는지를 배우기 위해 단일 ListBox를 단일 ObservableCollection에 바인딩하는 매우 간단한 프로젝트를 만드는 것이 좋습니다. – Will