0

RadioButton が Bullet の後ろに星のイメージを表示できるように、RadioButton をカスタマイズするスタイルを作成しています。Bullet レイアウトを保持する 20x20 グリッドの背景として、ImageBrush で星を描画しています。RadioButton の全体的な高さを 20px にしたくないことを除いて、正常に動作しています。したがって、グリッドを 10x10 のみにしたいのですが、星は 20x20 で、弾丸の後ろの中央にあります (したがって、星の左上の座標は、grdBullet の左上に対して -5,-5 になります)。星の画像をレイアウトの背後または外側に描画するにはどうすればよいですか?

私のスタイルの抜粋:

....
<ImageBrush x:Key="StarBrush" ImageSource="/Common;component/Resources/Images/FavoriteStar_FrontFacing_24x24_96.png" />
</Style.Resources>
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type RadioButton}">
            <BulletDecorator VerticalAlignment="Center">
                <BulletDecorator.Bullet>
                    <Grid Name="grdBullet" Height="20" Width="20" Background="{StaticResource StarBrush}">
                        <Grid Width="10" Height="10" HorizontalAlignment="Center" VerticalAlignment="Center">
                            <Ellipse Name="RadioOuter" Fill="#FFF4F4F4" Stroke="#FF8E8F8F" StrokeThickness="1"/>
                            <Ellipse Name="RadioInner" StrokeThickness="1" Margin="2" Fill="{StaticResource RadioInnerDefaultFill}" Stroke="{StaticResource RadioInnerDefaultStroke}" />
                            <Ellipse Name="RadioChecked" StrokeThickness=".75" Margin="2.5" Stroke="#FF193B55" Fill="{StaticResource RadioCheckedFill}" Visibility="Hidden" />
                            <Border CornerRadius="0" Margin="4" Name="RadioMark" Background="#FFADADAD" Visibility="Hidden" />
                        </Grid>
                    </Grid>
                </BulletDecorator.Bullet>

                <!--Text element-->
                <TextBlock Margin="3,0,0,0" VerticalAlignment="Center" Foreground="{TemplateBinding Foreground}" FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}">
                    <ContentPresenter />
                </TextBlock>
            </BulletDecorator>
....
4

2 に答える 2