1
私はカスタムコントロールアイコンを持っています。これには四角形が含まれています。私の設定親の値にデフォルトを設定します。しかし、時には私は任意の色に塗りつぶしを設定したいと思います。私はFillのDependencyPropertyを作成したくありません。代替はありますか? これは私のコードです:WPF - カスタムコントロールが長方形に塗りつぶされます
アイコンコントロール:
<UserControl>
<Rectangle Width="12" Height="12"
Fill="{Binding Path=Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Control}, AncestorLevel=3}}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{Binding Path=Picture, RelativeSource={RelativeSource AncestorType={x:Type local:Icon}}}" />
</Rectangle.OpacityMask>
</Rectangle>
</UserControl>
public partial class Icon
{
public static readonly DependencyProperty PictureProperty
= DependencyProperty.Register("Picture", typeof(Canvas), typeof(Icon));
public Canvas Picture
{
get { return (Canvas)GetValue(PictureProperty); }
set { SetValue(PictureProperty, value); }
}
public Icon()
{
InitializeComponent();
}
}
使用 これは動作します:
<controls:Icon Picture="{StaticResource appbar_calendar}"/>
これも希望:
<controls:Icon Picture="{StaticResource appbar_calendar}" Fill="Yellow"/>
両方のオプションが欲しいです。 おかげ
ControlTemplateでフォアグラウンド値を使用しているようですので、 は期待通りに動作します。 –
WPFUser
ちょっとしたニックピッキング:カスタムコントロールと 'UserControl'は別のコンセプトです。あなたが 'UserControl'のための' ControlTemplate'を書いているのであれば、実際のカスタムコントロールを作るほうが良いでしょう。 – grek40