c#,列表框水平对齐
本文关键字:水平 对齐 列表 | 更新日期: 2023-09-27 18:08:53
我有一个WPF应用程序,我想添加一个项目与horizontalalign = Left,然后其他与horizontalalign = right,像在Whatsapp聊天,但所有的文本在列表框有水平对齐在右边,我怎么能使用不同的水平对齐在同一个列表框。
这是我的XAML代码: <ListBox x:Name="ListBoxChat" HorizontalAlignment="Stretch" Height="366" VerticalAlignment="Top" Width="270" Margin="2,44,0,0" Padding="2"/>
<TextBlock Foreground="Transparent" Name="TextB" Margin="2,-5,2,-3"></TextBlock>
,下面是c#代码:
ListBoxChat.HorizontalAlignment = HorizontalAlignment.Left;
ListBoxChat.Items.Add("How are you ?");
ListBoxChat.HorizontalAlignment = HorizontalAlignment.Right;
ListBoxChat.Items.Add("Fine!!!");
谢谢!
可以创建单个StackPanel
来承载ListView
。像这样,
<StackPanel>
<ListView x:Name="chatList" Width="value" />
</StackPanel>
你并不真的需要StackPanel,我只是使用它!
现在在CSharp代码中,您可以处理用户或网络的事件。我不会深入讨论这个过程,但是一个例子是
void addItem (object sender, EventArgs e) {
// first create the new item!
ListViewItem item = new ListViewItem();
// add the properties..
item.Content = "Hi, my name is Slim Shady!";
if(messageBy == "user") {
// if message is by user, align it to right
item.HorizontalAlignment = HorizontalAlignment.Left;
} else {
// if message is by network (friend), align it to left
item.HorizontalAlignment = HorizontalAlignment.Right;
}
// now add the item to the listbox
chatList.Items.Add(item); // done! :-)
}
你可以执行这段代码,每次有新的项目发生!但是你真的需要确保所有的条件都检查过了。因为使用条件,你也可以改变项目的颜色,就像在WhatsApp中,你也可以做其他事情。这完全取决于条件,以及你使用它的方式。
祝你好运!
您可以通过在ListBoxItem
上应用样式并使用AlternationCount
和AlternationIndex
来实现这一点,如下所示:
<ListBox x:Name="ListBoxChat" HorizontalAlignment="Stretch" Height="366" VerticalAlignment="Top" Width="270" Margin="2,44,0,0" Padding="2"
AlternationCount="2">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex),
RelativeSource={RelativeSource Self}}" Value="0">
<Setter Property="HorizontalContentAlignment" Value="Left"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=(ItemsControl.AlternationIndex),
RelativeSource={RelativeSource Self}}" Value="1">
<Setter Property="HorizontalContentAlignment" Value="Right"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>