c# - 根据条件编辑 ListBoxItem
问题描述
我正在为一个学校项目建立一个聊天室。在聊天室中有一个包含所有消息的列表框。
<ListBox x:Name="msglistBox" ItemsSource="{Binding Messages, Mode=OneWay}">
Messages
是一个ObservableCollection
包含所有消息的。该类Message
具有发件人名称变量。聊天室知道user_name
登录用户的user_name
身份和发送任何给定消息的用户的身份。
我想添加编辑消息的选项,但我想确保只有发送消息的用户才能执行此操作。理想情况下,“编辑”按钮只对消息发送者可见,其他用户不可见。
如何添加允许用户在列表框中编辑消息的按钮?
我怎样才能做到只有发送消息的用户才能看到该按钮?
解决方案
您应该编辑您的 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" />
如果您有更多帮助,请告诉我
推荐阅读
- xml - xml dtd 中的希腊语/特殊字符无法识别
- wear-os - readDailyTotalFromLocalDevice 要求用户登录
- json - 如何访问纯 dart 包中的资产文件?
- android - Godot 导出到 Android
- arrays - reactjs链过滤数组
- python - 我收到 python 错误 - AttributeError: 'str' object has no attribute 'items'
- java - Android - RecyclerView 在 ViewHolder 中获取变量
- javascript - 在 Blazor WebAssembly 中使用 emscripten 编译的 js/wasm
- c# - C# - 连接对先前创建的实例的引用?
- r - R:使用 tidyverse 将 NA 替换为 df 中的其他变量