最初の列の幅をグリッドの幅からXAMLの2番目の列の幅を引いた値に設定するにはどうすればよいですか?私は鉛筆で飾るTextBox
を作っているので、これを行う必要があります。最初の列の幅をグリッドの幅とxamlの2番目の列を等しく設定する
私のリソース辞書のコード(私の質問の一番下にある)は私にこの結果を与えてくれます。最初の4つは、この瞬間にTextBox
がどのようになっているかです。最後の1つは、どうすればTextBox
のように見えるかです。これは、テキストをロットの空白に等しく設定することで一時的に解決されることに注意してください。 ControlTemplate
の最初の列は、以下のストレッチでなければならないことも
<TextBox Grid.Row="0" Margin="5" Text=""/>
<TextBox Grid.Row="1" Margin="5" Text="Plop"/>
<TextBox Grid.Row="2" Margin="5" Text="Ploperdeplop"/>
<TextBox Grid.Row="3" Margin="5" Text="Ploperdeploperdeploperdeplop"/>
<TextBox Grid.Row="4" Margin="5" Text=" ">
注:
あなたは上の画像のコードを参照してください(フルスクリーンで見るには画像をクリックしてください)穴の上にGrid
。 ControlTemplate
は、150ピクセルの幅及び第二カラム(鉛筆を持つ列)を有する場合では50pxであり、最初の列(TextBox
持つ列)は100pxに幅を持たなければなりません。グリッドが300ピクセルで、2列目が同じ場合(50ピクセル)の場合、最初の列は250ピクセル幅でなければなりません。
ここでは、私のリソース辞書の一部です。
<Style TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="#FF333333"/>
<Setter Property="Background" Value="White"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}">
<VisualStateManager.VisualStateGroups...>
<Grid x:Name="grdRoot" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/> <!-- this column (index zero) must have a width of the width of the grid minus the second column (index one)-->
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="txbText" Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TextBox}}, Path=Text}" Style="{x:Null}" BorderBrush="{x:Null}"
Grid.Column="0" Focusable="{TemplateBinding Focusable}" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch"/>
<Button x:Name="btnPencil" Grid.Column="1" Focusable="False" HorizontalAlignment="Left" Margin="3,0,3,0" Grid.Row="0" VerticalAlignment="Top" Width="20">
<Button.Content>
<fa:ImageAwesome Icon="Pencil"/>
</Button.Content>
</Button>
</Grid>
</Border>
<ControlTemplate.Triggers...>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
私はgrdRoot
ためHorizontalAlignment="Strech"
へHorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
を変更することで、私の質問を解決してきました@AShからのコメントでは
'たHorizontalAlignment = "ストレッチ"' grdRoot'は、所望の効果に – ASh
@AShを与える必要があります 'のために:あなたのコメントのおかげで、それは私に役立ちます:) –