【发布时间】:2017-11-19 17:55:31
【问题描述】:
你好,我对 xaml 很陌生,我真的不知道这样的 bug 叫什么。
我有以下 <ControlTemplate> 和 <Style> 在我在后面的代码上创建的 TextBoxes 旁边显示验证错误。我遇到的问题是验证错误中的文本溢出网格,并且 ScrollViewer 不会像网格中的其他子项那样扩展它。
<UserControl.Resources>
<local:ValidationModels x:Key="validationModels" textBox_Text=" " />
<ControlTemplate x:Key="validationTemplate" >
<DockPanel Grid.Column="2">
<TextBlock Foreground="Red" FontSize="15" Text="Error" DockPanel.Dock="Right"></TextBlock>
<AdornedElementPlaceholder/>
</DockPanel>
</ControlTemplate>
<Style x:Key="InputControlErrors" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
然后我的 xaml 部分包含 <ScrollViewer> <Grid>
<StackPanel Orientation="Vertical">
<Label Content="NCR Assignment" FontSize="32" FontWeight="Bold" HorizontalAlignment="Center" Margin="16"/>
<ScrollViewer Height="314" Margin="48,0,52,0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Visible" >
<Grid Name="NCRGrid" RenderTransformOrigin="0.365,0.559">
<Grid.ColumnDefinitions >
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
</Grid>
</ScrollViewer>
</StackPanel>
我将 TextBlock 控件添加到 Grid 的第一列,并将 TextBox 控件添加到 Grid 的第二列。
我面临的问题是 ScrollViewer 扩展了 TextBlock 文本和 TextBox 字段(我可以水平滚动),但它不会扩展来自 ControlTemplate 的验证错误文本,我看到它的唯一方法是最大化手动打开窗口。
<ControlTemplate x:Key="validationTemplate" >
<DockPanel Grid.Column="2">
<TextBlock Foreground="Red" FontSize="15" Text="Error" DockPanel.Dock="Right"></TextBlock>
<AdornedElementPlaceholder/>
</DockPanel>
</ControlTemplate>
【问题讨论】: