c# - 根据条件编辑 ListBoxItem

标签 c# wpf

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

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

Messages 是一个包含所有消息的 ObservableCollectionMessage 类有发件人姓名变量。聊天室知道登录用户的 user_name 和发送任何给定消息的用户的 user_name

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

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

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

最佳答案

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

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

<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" />

如果你有新的帮助请告诉我

关于c# - 根据条件编辑 ListBoxItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50676429/

相关文章:

WPF 数据模板内容演示者 "Binding"

c# - 如何使用其自己的 DataTemplate DependencyProperty 实现 WPF 控件?

c# - 自动滚动在子用户控件中不起作用

C# Parallel.ForEach XslCompiledTransform 与 Saxon 9.7.0.6 HE

c# - 如何将应用程序命令绑定(bind)到 View 模型(WPF)?

c# - 如何在 Nunit 中调用 WPF Dispatcher?

c# - 密码保护 Winforms 应用程序

c# - 按钮单击仅在 IE9 中的更新面板中不起作用

c# - 在 FreeImage 中更改图像分辨率

c# - 通过按钮在 wpf 窗口中显示用户控件