【发布时间】:2017-01-11 14:35:12
【问题描述】:
我对 XAML 完全陌生,但对 C# 和 .NET 并不陌生。我正在创建一个 Windows 8.1 应用程序,我想创建和实现一个数学分数控件,它表示一个分子和分母(第一个高于第二个)的结构,它们之间有水平线。我将在这里介绍我已经取得的成果,但我知道它很差,而且我的思维方式本身可能与 XAML 不同。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestWindowsApplication"
xmlns:local2="using:TestWindowsApplication.CustomControls">
<Style TargetType="local2:MathStructure" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local2:MathStructure">
<StackPanel>
<Border>
<Grid>
<Canvas>
<TextBlock>
1
</TextBlock>
</Canvas>
</Grid>
</Border>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="local2:FractionControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local2:FractionControl">
<Border BorderThickness="2" BorderBrush="Green">
<Grid Height="200" Width="120">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
<Border Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="4" BorderThickness="0,0,0,2" BorderBrush="Red"/>
<Border BorderThickness="1" BorderBrush="White" Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2" Grid.RowSpan="2">
<Grid>
</Grid>
</Border>
<Border BorderThickness="1" BorderBrush="White" Grid.Row="6" Grid.Column="2" Grid.ColumnSpan="2" Grid.RowSpan="2">
<Grid>
</Grid>
</Border>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
我希望这个控件是可重用的 - 我将实现更多这样的结构(如积分、导数、总和等),因此所有这些控件的目标是能够将一个放在另一个里面(例如以另一个分数为分子,以一个积分为分母的分数)。
我不希望有一个有效的示例(尽管一个完整的示例对我来说是很好的学习),我会很感激我在这里得到的每一个提示、提示和代码。
【问题讨论】:
-
请问这是干什么用的?输入还是输出?显示单个分数 - 或范围(您的行定义让我失望)
-
它将成为一种工具,使用户能够选择要插入的结构 - 例如分数,然后再次使用户能够插入另一个结构(代替分数的分子或分母)或符号(数字或字符/字符串)。所以它必须是完全可编辑的——比如 microsoft office word equations。
标签: c# xaml custom-controls windows-applications template-control