在Web表单中,Repeater有一个事件OnItemDataBound
Windows Phone应用程序中的ListBox是否有类似事件
我正在尝试开发一些类似聊天(发信息)的东西,我需要将StackPanel放在不同的一边
有什么想法吗?
Xaml
<ListBox Name="TicketReplyListBox" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Background="Blue" MaxHeight="200" Width="400" HorizontalAlignment="Left">
<TextBlock Text="{Binding ContentText}"
FontSize="18"
FontFamily="ResourcesFontssylfaen.ttf#sylfaen"
FontWeight="Bold"
TextWrapping="Wrap"
Margin="6,12,6,6"
HorizontalAlignment="Left"
VerticalAlignment="Top" />
<TextBlock Text="{Binding Date}"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Margin="6,0,6,6"
FontSize="18"
FontFamily="Segoe WP SemiLight" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
代码:
public class TicketReplyModel
{
public int TicketID { get; set; }
public string ContentText { get; set; }
public bool IsClient { get; set; }
public DateTime Date { get; set; }
}
Service1Client WCFClient = new ServiceReference1.Service1Client();
public ActiveTicketDetail()
{
InitializeComponent();
WCFClient.GetTicketReplyListCompleted += new EventHandler<GetTicketReplyListCompletedEventArgs>(WCFClient_GetTicketReplyListCompleted);
WCFClient.GetTicketReplyListAsync(84);
}
void WCFClient_GetTicketReplyListCompleted(object sender, GetTicketReplyListCompletedEventArgs e)
{
List<TicketReplyModel> TickteReptyList = new List<TicketReplyModel>();
TickteReptyList = e.Result.ToList();
TicketReplyListBox.ItemsSource = TickteReptyList;
}
在每次迭代中,我都希望根据IsClient 的值在不同的一侧对齐StackPanel
找到解决方案
Xaml:
<ScrollViewer>
<StackPanel x:Name="Tikcetst">
</StackPanel>
</ScrollViewer>
代码:
public ActiveTicketDetail()
{
InitializeComponent();
WCFClient.GetTicketReplyListCompleted += new EventHandler<GetTicketReplyListCompletedEventArgs>(WCFClient_GetTicketReplyListCompleted);
WCFClient.GetTicketReplyListAsync(84);
}
void WCFClient_GetTicketReplyListCompleted(object sender, GetTicketReplyListCompletedEventArgs e)
{
List<TicketReplyModel> TickteReptyList = new List<TicketReplyModel>();
TickteReptyList = e.Result.ToList();
TickteReptyList.ForEach(item =>
{
TextBlock txtBl1 = new TextBlock();
txtBl1.Text = item.ContentText;
txtBl1.Padding = new Thickness(5);
txtBl1.FontSize = 18;
TextBlock txtBl2 = new TextBlock();
txtBl2.Text = item.Date.ToShortDateString();
txtBl2.Padding = new Thickness(5);
txtBl2.FontSize = 14;
txtBl2.HorizontalAlignment = HorizontalAlignment.Right;
StackPanel st = new StackPanel();
st.Children.Add(txtBl1);
st.Children.Add(txtBl2);
st.Width = 400;
st.HorizontalAlignment = item.IsClient ? HorizontalAlignment.Right : HorizontalAlignment.Left;
st.Margin = new Thickness(5);
string fileName = item.IsClient ? "Images/MessagecollorMe.png" : "Images/MessagecollorBank.png";
BitmapImage image = new BitmapImage(new Uri(fileName, UriKind.Relative));
ImageBrush brush = new ImageBrush();
brush.ImageSource = image;
st.Background = brush;
Tikcetst.Children.Add(st);
});
}