首页 > 解决方案 > 根据条件编辑 ListBoxItem

问题描述

我正在为一个学校项目建立一个聊天室。在聊天室中有一个包含所有消息的列表框。

 <ListBox x:Name="msglistBox" ItemsSource="{Binding Messages, Mode=OneWay}">

Messages是一个ObservableCollection包含所有消息的。该类Message具有发件人名称变量。聊天室知道user_name登录用户的user_name身份和发送任何给定消息的用户的身份。

我想添加编辑消息的选项,但我想确保只有发送消息的用户才能执行此操作。理想情况下,“编辑”按钮只对消息发送者可见,其他用户不可见。

如何添加允许用户在列表框中编辑消息的按钮?

我怎样才能做到只有发送消息的用户才能看到该按钮?

标签: c#wpf

解决方案


您应该编辑您的 ListBoxItem 模板,使其具有一个按钮和一个 TextBlock。

您的 ListBox DataContext 应该是一个新类的列表,该类将具有一个字符串(消息)和一个标志,以便它可以更改将根据您的条件初始化的消息(布尔)。或多或少是这样的:

<Window.Resources>
    <DataTemplate x:Key="ChatTemplate">
        <Grid>
            <TextBlock Text="{Binding Path=Message}"/>
            <Button IsEnabled="{Binding IsAuthor}"></Button>
        </Grid>
    </DataTemplate>
</Window.Resources>

<ListBox ItemsSource="yourNewClassList" ItemTemplate ="ChatTemplate" />

如果您有更多帮助,请告诉我


推荐阅读