【问题标题】:Display matrices in XAMLXAML 中的显示矩阵
【发布时间】:2013-08-05 13:36:14
【问题描述】:

我正在开发一个计算几个 4x4 矩阵(二维双数组)的应用程序。

private double[,] matrix1 = new double[4,4];
private double[,] matrix2 = new double[4,4];

计算系数后,我想在我的视图中显示矩阵。我想使用方括号 (http://upload.wikimedia.org/math/e/2/b/e2b3fba5aaeb1ade3407ca02aa870a5e.png) 或大括号 (http://upload.wikimedia.org/math/5/d/5/5d5847e4483c97c3f4c767ed15ab1c27.png)。
XAML 是否提供以这种方式显示矩阵的元素?如果不是,是否可以以类似的方式显示矩阵?

【问题讨论】:

标签: c# wpf xaml


【解决方案1】:

在 WPF 中,您可以使用 Path 对象来绘制边(这些边是直的)和 UniformGrid 来显示内容,从而轻松创建这种外观:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="300">
    <Window.Resources>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="TextAlignment" Value="Center" />
            <Setter Property="VerticalAlignment" Value="Center" />
        </Style>
    </Window.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <Path Grid.Column="0" Data="M 0,0 0,300 15,300 15,295 5,295 5,5 15,5 15,0" 
            Width="15" Height="300" Fill="Black" VerticalAlignment="Stretch" 
            HorizontalAlignment="Center" />
        <UniformGrid Grid.Column="1" Columns="2" Rows="2" TextElement.FontFamily=
            "Palatino Linotype" TextElement.FontSize="28">
            <TextBlock>
                <Run Text="a" />
                <Run Typography.Variants="Subscript" FontStyle="Italic" Text="11" />
            </TextBlock>
            <TextBlock>
                <Run Text="a" />
                <Run Typography.Variants="Subscript" FontStyle="Italic" Text="11" />
            </TextBlock>
            <TextBlock>
                <Run Text="a" />
                <Run Typography.Variants="Subscript" FontStyle="Italic" Text="21" />
            </TextBlock>
            <TextBlock>
                <Run Text="a" />
                <Run Typography.Variants="Subscript" FontStyle="Italic" Text="22" />
            </TextBlock>
        </UniformGrid>
        <Path Grid.Column="2" Data="M 15,0 15,300 0,300 0,295 10,295 10,5 0,5 0,0" 
            Width="15" Height="300" Fill="Black" VerticalAlignment="Stretch" 
            HorizontalAlignment="Center" />
    </Grid>
</Window>

要使其正常工作,需要注意两个重要事项:

您选择的TextElement.FontFamily必须能够显示Subscript

您可以绑定到 Run.Text 属性,而不是像我在您的示例中那样硬编码值:

<Run Text="{Binding Value1}" />
<Run Typography.Variants="Subscript" FontStyle="Italic" Text="{Binding Value2}" />

【讨论】:

    【解决方案2】:

    如有疑问,请假装。这可能对您有用,因为它是一种获得您想要的效果的简单方法。示例;

    <Grid VerticalAlignment="Center" HorizontalAlignment="Center" MaxWidth="200">
       <Rectangle Stroke="Black" StrokeThickness="2" Fill="White"/>
       <Rectangle Fill="White" Margin="8,0"/>
    
       <TextBlock TextWrapping="Wrap" Margin="10">
          <Run Text="This would be all of your content here."/><LineBreak/><LineBreak/>
          <Run Text="If you just populate your content like this, then you could just put a Center Horizontal/Vertical Alignment on the Grid and it would only take up the space necessary."/>
       </TextBlock>
    
    </Grid>
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多