一个关于依赖属性与控件显示的问题
wpf吧
全部回复
仅看楼主
level 2
a-a_a_a- 楼主
我尝试自定义一个类似于聊天气泡的控件(也许是这么叫的
总之是希望这个控件在左边显示头像,右边显示文本内容;或者右边显示文本 左边显示头像。
(因为只是随便测试就直接找了张vs和vsc图片当头像 并直接用了绝对路径)
然而最终的显示结果是:
图片绑定到了,但似乎针对Grid.Column的绑定并没有生效
求大佬解惑,谢谢!
附项目结构:
(我知道My-开头这种命名方式很令人无语,但我还没想好名字,就暂时先这么叫)
2023年10月21日 14点10分 1
level 3
如果能提供可运行源代码或GitHub链接当然更好,从你提供的代码来看
与其在Grid.Column中进行绑定,使用像IsOwnMessage这样的布尔值进行区分可能会更好。
public class ChatMessage
{
public string MessageText { get; set; }
public string UserImage { get; set; }
public bool IsOwnMessage { get; set; }
}
所以在你的自定义控件中,可以通过DataTrigger进行处理
处理方法也很简单的
<DataTemplate x:Key="OwnMessageTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding MessageText}" />
<Image Source="{Binding UserImage}" Width="50" Height="50" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="OtherMessageTemplate">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding UserImage}" Width="50" Height="50" />
<TextBlock Text="{Binding MessageText}" />
</StackPanel>
</DataTemplate>
<ControlTemplate TargetType="ListBoxItem">
<Border>
<ContentPresenter x:Name="MyContentPresenter" ContentTemplate="{StaticResource OtherMessageTemplate}"/>
</Border>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding IsOwnMessage}" Value="true">
<Setter TargetName="MyContentPresenter" Property="ContentTemplate" Value="{StaticResource OwnMessageTemplate}"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
可以通过IsOwnMessage值来切换DataTemplate。这种方式可以获得更高的质量,你可以参考一下!希望对你有帮助啦~
还有其他问题可以github_jamesnet214找到我 ~
2023年10月22日 08点10分 2
1