ただし、フェイシャルコースのラジオボタンの弾揃えトップ?
-
22-08-2019 - |
質問
している複数行のラジオボタンいたいの弾きの左側のコンテンツ(デフォルト)にはラジオボタン。何のための最も簡単な方法はないことォ?
解決
注意:チェックしてみてください レイチェルの応答 -彼女は、このステージはさらに汎用のテンプレート
まずな時間 VerticalAlignment
または VerticalContentAlignment
(あるいは ControlTemplate
).いしないしたいものでなされるものであります。
に記載の通り MSDN a BulletDecorator
(制御するチェックボックスとラジオボタンの使用を描画するためにラジオ/チェックボタン)を定位置にアイコンの動します。またの追加を制御す:
弾い合わせの最初の行のテキストの子 オブジェクトのテキストオブジェクトです。場合にはオブジェクトがないテキストオブジェクトの 弾揃えの中央に子オブジェクトです。
ない限り、変更の管理テンプレートは不要です)することができる位置は、ラジオ/チェックアイコンの上により内容物が目に入った場合にはがします。
だいこういう良い知らせに移動することができるアイコンをどんなに多くの VerticalAlignment
物件てみます。
<RadioButton>
<StackPanel>
<TextBlock Text="First line"/>
<TextBlock Text="Something else"/>
</StackPanel>
</RadioButton>
が 幸いなことにきくする TextBlock
を使用 InlineUIContainer
.テキスト(またはコンテンツの最初の行轄の位置にアイコンを自動的にだいたいものの下には、最初の行う機会を設けていきたいと思いテキストで利用 <Linebreak/>
その <InlineUIContainer/>
以下に例を示しますが、特大 TextBox
をより明確に何が起きています。
<RadioButton>
<TextBlock VerticalAlignment="Top" TextWrapping="Wrap">
<TextBlock Text="Products with <" VerticalAlignment="Center" Margin="0,0,5,0"/>
<InlineUIContainer BaselineAlignment="Center">
<TextBox FontSize="30" Width="25" Text="10" Margin="0,0,5,0"/>
</InlineUIContainer>
<TextBlock VerticalAlignment="Center" Margin="0,0,5,0">
<Run Text="days" FontWeight="Bold"/>
<Run Text="inventory" />
</TextBlock>
<LineBreak/>
<InlineUIContainer>
<StackPanel>
<CheckBox Content="Include unsold products" />
<CheckBox Content="Include something else" />
</StackPanel>
</InlineUIContainer>
</TextBlock>
</RadioButton>
他のヒント
私は内蔵の比較的汎用のテンプレートに基づく サイモン-ウィの回答 利用できるほとんどの状況ないカスタマイズ RadioButton.Content
ます。
<ControlTemplate x:Key="MultiLineRadioButtonTemplate" TargetType="{x:Type RadioButton}">
<RadioButton IsChecked="{TemplateBinding IsChecked}">
<TextBlock>
<LineBreak />
<InlineUIContainer>
<ContentPresenter Margin="0,-21,0,8"
Content="{TemplateBinding ContentPresenter.Content}"
ContentTemplate="{TemplateBinding ContentPresenter.ContentTemplate}"/>
</InlineUIContainer>
</TextBlock>
</RadioButton>
</ControlTemplate>
説明どのようにテンプレート作品
の
TextBlock
があるのでデフォルトでは、ラジオボタンを弾合わせの最初の行がある場合、テキストのコンテンツであるテキストオブジェクト(Label
動作しません)の
LineBreak
で包み込むコンテンツの新しいパスワードを入力の最初のラインが作成されの
InlineUIContainer
はいできる非テキストのコンテンツTextBlock
の
ContentPresenter
では、実際のコンテンツでは負のトップマージンのスペースが残しLineBreak
オブジェクトです。
こちらは一部の例コンテンツ:
<StackPanel>
<RadioButton Template="{StaticResource MultiLineRadioButtonTemplate}">
<StackPanel>
<Label Content="Option 1" />
<StackPanel>
<CheckBox Content="Some setting" />
<CheckBox Content="Some other setting" />
</StackPanel>
</StackPanel>
</RadioButton>
<RadioButton Template="{StaticResource MultiLineRadioButtonTemplate}">
<StackPanel>
<Label Content="Option 2" />
<DataGrid AutoGenerateColumns="False" Height="100">
<DataGrid.Columns>
<DataGridTextColumn Header="Id" />
<DataGridTextColumn Header="Date" />
<DataGridTextColumn Header="Total" />
<DataGridTextColumn Header="Count" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</RadioButton>
<RadioButton Template="{StaticResource MultiLineRadioButtonTemplate}">
<StackPanel>
<Label Content="Option 3" />
<TextBlock TextWrapping="WrapWithOverflow" Margin="2">
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.
</TextBlock>
</StackPanel>
</RadioButton>
</StackPanel>
どのように見え:
みんな嬉しいのがマイナスのトップマージンの ContentPresenter
ているハードコードがうまくいかない場合も変更文字サイズは、手動で調整する。
なかったと思いるハードをコンバーターの Margin
物件と計算の高さに改行({TemplateBinding FontSize}
?), もの拡張バージョンをラジオボタンを制御してこの動作をデフォルトでは、まずは今のハード-コーディング-21に基づくアプリのデフォルトのフォントサイズです。
ものするために追加 TemplateBindings
の RadioButton
のテンプレートを継承する場合その他の物からの RadioButton
, などのマージン、パディング、アライメント、など。まず IsChecked
目的で保たれています。
RadioButtonのためControl.Templateをオーバーライドします。ここでMSDN ラジオボタンコントロールテンプレートの例からの例の
あなたはラジオボタンのControl.Templateを上書きしたくない場合は、コンテンツのラップのTextBlockすることができます。このサンプルを参照してください。
<RadioButton Name="radioButton1">
<TextBlock TextWrapping="Wrap">Here is some multiline text that does some wrapping</TextBlock>
</RadioButton>