c# - 如何在 UWP 中创建对话气泡?

标签 c# .net xaml uwp

我正在创建一个聊天应用程序,并希望创建包含每条消息的典型对话气泡。我在 Blend(在 XAML 中)中创建了一个 Path 对象,如下所示:

enter image description here

问题是路径被设计为具有指定的宽度和高度,我希望它环绕文本而不拉伸(stretch),所以它看起来不会像边框一样变形

我怎样才能让它表现得像我想要的那样?

最佳答案

您可以将 PolygonStackPanel 结合使用:

<StackPanel Orientation="Horizontal"
            HorizontalAlignment="Left"
            Padding="6"
            >
    <Polygon Points="0,0 15,0 15,15"
             Fill="LightGray"
             Margin="0,10,0,0"
             />

    <Border Background="LightGray"
            CornerRadius="3"
            Padding="6"
            VerticalAlignment="Top"
            >
        <TextBlock Text="Text"
                   TextWrapping="WrapWholeWords"
                   Width="100"
                   Height="50"
                   />
    </Border>
</StackPanel>

看起来像这样:

Screenshot 1

编辑:

带边框的版本:

<Grid HorizontalAlignment="Left"
      Padding="6"
      >
    <Polygon Points="0,0 15,0 15,15"
             Fill="LightGray"
             Stroke="Black"
             Margin="0,10,0,0"
             />

    <Border Background="LightGray"
            BorderBrush="Black"
            BorderThickness="0.5"
            CornerRadius="3"
            Padding="6"
            Margin="14,0,0,0"
            VerticalAlignment="Top"
            >
        <TextBlock Text="Text"
                   TextWrapping="WrapWholeWords"
                   Width="100"
                   Height="50"
                   />
    </Border>

    <Polygon Points="0,0 15,0 15,15"
             Fill="LightGray"
             Margin="0,10,0,0"
             />
</Grid>

这可能不是最简单和最好的方法,也许 Path 会更好,但它有效:

Screenshot 2

关于c# - 如何在 UWP 中创建对话气泡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43761186/

相关文章:

c# - C#/.Net 中有 "Space(n)"方法吗?

.net - Silverlight 开发入门

c# - 某些属性名称的 WPF 绑定(bind)问题

c# - 如何使用 Unity3D 检测移动设备上的摇动 Action ? C#

c# - 动态添加可点击列表项到 Windows Phone ListBox

.net - 使用适用于 .NET 的 AWS 开发工具包的 API 网关签署请求

.net - 使用 Microsoft.Azure.ActiveDirectory.GraphClient 更改用户密码

c# - 如何在应用程序启动时预加载 XAML?

c# - 使用 ComboBoxItem 文本作为 Property Setter 的值

c# - CaSTLe Windsor 按约定注册组件