如果能提供可运行源代码或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找到我 ~
与其在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找到我 ~