【发布时间】:2019-03-19 23:32:20
【问题描述】:
在发布这个问题之前,我已经搜索并研究了 StackOverflow 上给出的所有答案,但没有一个对我有帮助,所以我在这里^^
我的目标是使用 TextBox 在 UWP 中获得标签的对应关系。
在 TextBox 属性中,我设置了“IsReadOnly="True"”,但“框”仍然可见,即使它的属性设置为透明。
所以我还添加了“IsEnabled="False"" 属性并获得了我的“标签”。
-
但是,由于项目要求,我需要 白色文本,而不是 uwp 的默认灰色文本。因此,我尝试设置 自定义样式(遵循 stackOverflow 的所有答案),直到找到此解决方案:
<Style x:Key="Titoli" TargetType="TextBox">
<Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}" />
<Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="SelectionHighlightColor" Value="{ThemeResource SystemControlHighlightAccentBrush}" />
<Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}" />
<Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
<Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Auto" />
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Auto" />
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" />
<Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False" />
<Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/>
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="Background" Value="{x:Null}" />
<Setter Property="IsHitTestVisible" Value="False" />
<Setter Property="Template" >
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border x:Name="ContentElement" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
并获得此预览(T1、T2、T3 ecc 是我关注的标签):
但是当我调试时,应用程序看起来是这样的:
所以没有文本框被“打印”出来......我真的想不出一个解决方案(我的自定义按钮图像也消失了!)有什么建议吗?
我还从here 复制粘贴了完整的文本框并进行了修改,但我无法以这种方式在第一个屏幕中检索解决方案...
Xaml.MainPage 的代码 sn-p:
<Grid.ColumnDefinitions>
<!--Definisco quante colonne voglio e come siano definite -->
<ColumnDefinition Width="15*"/>
<!-- Colonna per AGGIUNTE SUCCESSIVE -->
<ColumnDefinition Width="15*"/>
<!-- Colonna per Box dati -->
<ColumnDefinition Width="*"/>
<!-- Colonna per il sito a lato -->
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<!--Definisco quante righe voglio e come siano definite -->
<RowDefinition Height="30*"/>
<!-- riga per definire spazio per box dati -->
<RowDefinition Height="15*"/>
<RowDefinition Height="15*"/>
</Grid.RowDefinitions>
<!-- *********************** Sezione display sonde **************************** -->
<!-- Sezione Unità di Misura -->
<TextBox Text="°C" TextWrapping="Wrap" IsEnabled="False" Margin="285,146,374,282" Style="{StaticResource Titoli}" Height="52" Width="38" FontSize="36" FontFamily="Calibri Light" Grid.Column="1" HorizontalAlignment="Stretch"/>
<TextBox Text="°C" TextWrapping="Wrap" IsEnabled="False" Margin="567,146,92,282" Style="{StaticResource Titoli}" Height="52" Width="38" FontSize="36" FontFamily="Calibri Light" Grid.Column="1" VerticalAlignment="Stretch"/>
<TextBox Text="°C" TextWrapping="Wrap" IsEnabled="False" Margin="285,313,374,115" Style="{StaticResource Titoli}" Height="52" Width="38" FontSize="36" FontFamily="Calibri Light" Grid.Column="1" VerticalAlignment="Stretch"/>
<TextBox Text="°C" TextWrapping="Wrap" IsEnabled="False" Margin="567,313,92,115" Style="{StaticResource Titoli}" Height="52" Width="38" FontSize="36" FontFamily="Calibri Light" Grid.Column="1" HorizontalAlignment="Stretch"/>
<!-- Sezione Numerazione Sonde -->
<TextBox Text="T1" TextWrapping="Wrap" IsEnabled="False" Margin="278,94,348,308" Style="{StaticResource Titoli}" FontSize="48" FontFamily="Calibri Light" Grid.Column="1" d:LayoutOverrides="LeftPosition, RightPosition, TopPosition, BottomPosition" VerticalAlignment="Stretch"/>
<TextBox Text="T2" TextWrapping="Wrap" IsEnabled="False" Margin="560,94,66,308" Style="{StaticResource Titoli}" FontSize="48" FontFamily="Calibri Light" Grid.Column="1" d:LayoutOverrides="TopPosition, BottomPosition" Width="71"/>
<TextBox Text="T3" TextWrapping="Wrap" IsEnabled="False" Margin="278,261,348,141" Style="{StaticResource Titoli}" FontSize="48" FontFamily="Calibri Light" Grid.Column="1" d:LayoutOverrides="LeftPosition, RightPosition, TopPosition, BottomPosition" HorizontalAlignment="Stretch"/>
<TextBox Text="T4" TextWrapping="Wrap" IsEnabled="False" Margin="560,261,66,141" Style="{StaticResource Titoli}" FontSize="48" FontFamily="Calibri Light" Grid.Column="1" d:LayoutOverrides="TopPosition, BottomPosition" VerticalAlignment="Stretch" Width="71"/>
<!-- Sezione Valori di Misura -->
---------------编辑 正如@touseefbsb 所建议的,这里是带有TextBlock 的版本,但调试中仍然没有显示...
<!-- Sezione Unità di Misura -->
<TextBlock Text="°C" TextWrapping="Wrap" IsTapEnabled="False" Margin="285,146,369,290" FontSize="36" FontFamily="Calibri Light" Grid.Column="1" d:LayoutOverrides="TopPosition, BottomPosition" Foreground="White" Width="43" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<TextBlock Text="°C" TextWrapping="Wrap" IsTapEnabled="False" Margin="567,146,92,282" Height="52" Width="38" FontSize="36" FontFamily="Calibri Light" Grid.Column="1" VerticalAlignment="Stretch" Foreground="White"/>
<TextBlock Text="°C" TextWrapping="Wrap" IsTapEnabled="False" Margin="285,313,374,115" Height="52" Width="38" FontSize="36" FontFamily="Calibri Light" Grid.Column="1" VerticalAlignment="Stretch" Foreground="White"/>
<TextBlock Text="°C" TextWrapping="Wrap" IsTapEnabled="False" Margin="567,313,92,115" Height="52" Width="38" FontSize="36" FontFamily="Calibri Light" Grid.Column="1" HorizontalAlignment="Stretch" Foreground="White"/>
<!-- Sezione Numerazione Sonde -->
<TextBlock Text="T1" TextWrapping="Wrap" IsTapEnabled="False" Margin="277,94,357,335" FontSize="48" FontFamily="Calibri Light" Grid.Column="1" d:LayoutOverrides="LeftPosition, RightPosition, TopPosition, BottomPosition" FocusVisualPrimaryBrush="White" Foreground="White"/>
<TextBlock Text="T2" TextWrapping="Wrap" IsTapEnabled="False" Margin="560,94,66,343" FontSize="48" FontFamily="Calibri Light" Grid.Column="1" d:LayoutOverrides="TopPosition, BottomPosition" Width="71" FocusVisualPrimaryBrush="White" Foreground="White" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<TextBlock Text="T3" TextWrapping="Wrap" IsTapEnabled="False" Margin="285,261,344,163" FontSize="48" FontFamily="Calibri Light" Grid.Column="1" d:LayoutOverrides="HorizontalAlignment, TopPosition, BottomPosition" FocusVisualPrimaryBrush="White" Foreground="White" Width="68" RenderTransformOrigin="0.397,0.913"/>
<TextBlock Text="T4" TextWrapping="Wrap" IsTapEnabled="False" Margin="560,261,66,175" FontSize="48" FontFamily="Calibri Light" Grid.Column="1" d:LayoutOverrides="TopPosition, BottomPosition" Width="71" FocusVisualPrimaryBrush="White" Foreground="White" VerticalAlignment="Stretch"/>
<!-- Sezione Valori di Misura -->
【问题讨论】:
-
如果你只想显示文本为什么不使用简单的 TextBlock ?
-
我试过了,但我没有实现第一个屏幕设置,得到了与前面描述的相同的问题
-
基本上你想要一个 2 行文本块,以便 T1 可以出现在一行中,而 .C 可以出现在第二行中?
-
是的,这就是我的目标,您可以建议使用堆栈面板吗?
-
不,只是减小文本块的宽度,增大字体大小(根据应用程序的要求),现在当 text="T1 C" 通知有一个空格,所以这里有 2 个单词,这样你就可以用 1 个文本块实现你想要的。