2016-05-16 9 views
0

検証例外のテキストの隣に感嘆符を表示しようとしています。 私のカスタムテンプレートは、私のXAMLがありますあります:コントロールテンプレート内でのテクスチャブロックの配置

<Window x:Class="WpfApplicationLAB.NewGameWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplicationLAB" 
     mc:Ignorable="d" 
     Height="80" Width="260" 
     WindowStyle="None" 
     WindowStartupLocation="CenterScreen" 
     AllowsTransparency="False" 
     Title="NewGameWindow" 
     ResizeMode="CanResize" MinWidth="180" MinHeight="90"> 
    <Grid Name="GridInputName"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="25*"/> 
      <RowDefinition Height="29*"/> 
      <RowDefinition Height="28*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="51*"/> 
      <ColumnDefinition Width="121*"/> 
     </Grid.ColumnDefinitions> 
     <Label Grid.Row="1" Grid.Column="0" Content="Size:" HorizontalContentAlignment="Center"/> 
     <TextBox Name="textBox" Grid.Row="1" Grid.Column="1"> 
      <TextBox.Text> 
       <Binding Path="Ssize" UpdateSourceTrigger="PropertyChanged"> 
        <Binding.ValidationRules> 
         <local:SizeValidation/> 
        </Binding.ValidationRules> 
       </Binding> 
      </TextBox.Text> 
     </TextBox> 
     <Button Name="Cancel" 
      Grid.Row="2" Grid.Column="0" Content="Cancel" Click="Cancel_Click" > 
     </Button> 
     <Button Name="Ok" 
      Grid.Row="2" Grid.Column="1" Content="Ok" Click="Ok_Click"> 
     </Button> 
    </Grid> 
    <Window.Resources> 
     <Style TargetType="{x:Type TextBox}"> 
      <Setter Property="Validation.ErrorTemplate"> 
       <Setter.Value> 
        <ControlTemplate> 
         <StackPanel> 
          <Border Background="Red" Margin="0,0,0,0" Width="20" Height="20" CornerRadius="10" 
          ToolTip="{Binding ElementName=customAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"> 
           <TextBlock Text="!" VerticalAlignment="center" HorizontalAlignment="center" FontWeight="Bold" Foreground="white"> 
           </TextBlock> 
          </Border> 
          <TextBlock 
         Margin="5,0,0,0" 
         Foreground="Red" 
         Text="{Binding ElementName=MyAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"> 
          </TextBlock> 
          <Border BorderBrush="Red" BorderThickness="1" Margin="5,0,5,0" > 
           <AdornedElementPlaceholder Name="MyAdorner" ></AdornedElementPlaceholder> 
          </Border> 
         </StackPanel> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Resources> 
</Window> 

私はテキストの左側に感嘆符をしたい、私はとにかくそれを達することができない私は、スタックパネルで、試してみて、それは向きは、ドックを変更していますそれは、テキストボックス の左側にある任意のヒントすることができ、いくつかの異なる変数で How It looks like

:それはあることになります。このコードでは、パネルなど ?

+0

StackPanelをDockPanel内に保持し、StackPanelでDockPanel.Dock = "Left" Orientation = "Horizo​​ntal"プロパティを設定しようとしましたか? – riteshmeher

+0

残念ながら作業していません:(半分の解決策を得ました。誰かがそれをサイズ変更しないうちにサイズが大きくなりますが、サイジングをオフにすることができます:) – Vinci

答えて

0

Orientation="Horizontal"StackPanelForeground="Red"Background="Red"BorderTextBlockを包むようにしてください。

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="Validation.ErrorTemplate"> 
    <Setter.Value> 
     <ControlTemplate> 
     <StackPanel> 
      <StackPanel Orientation="Horizontal"> 
      <Border Background="Red" 
        Margin="0" 
        Width="20" 
        Height="20" 
        CornerRadius="10" 
        ToolTip="{Binding ElementName=customAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"> 
       <TextBlock Text="!" 
         VerticalAlignment="center" 
         HorizontalAlignment="center" 
         FontWeight="Bold" 
         Foreground="white"/> 
      </Border> 
      <TextBlock Margin="5,0,0,0" 
         Foreground="Red" 
         Text="{Binding ElementName=MyAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/> 
      </StackPanel> 
      <Border BorderBrush="Red" BorderThickness="1" Margin="5,0" > 
      <AdornedElementPlaceholder Name="MyAdorner"/> 
      </Border> 
     </StackPanel> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

これは私のために働いた。

PS:あなたがMinHeight="90" ...と書いたことを理解しましたか?Height="80"?あなたにとって理にかなっていますか?

関連する問題