独自のカスタムアタッチプロパティの場合、探しているものを実現するための2つのオプションがあります。
1.設定可能な値の組み合わせの数が複雑でない場合は、FlagsAttributeが設定された列挙型の添付プロパティを作成できます。ビット単位を使用して設定する値を組み合わせることができます-または|
:
[Flags]
public enum MultiDock
{
Left,
Top,
Right,
Bottom
}
そしてコードでのその使用法:
MyCustomPanelOrWhatever.SetMultiDock(MultiDock.Left | MultiDock.Bottom);
これには小さな問題が1つありますが、xamlで上記を直接行うことはできません。文字列をフラグ付き列挙値に変換できる、 MarkupExtensionを作成する必要があります。その使用法は次のようになります。
<CheckBox src:MyCustomPanelOrWhatever.MulitDock="{src:FlaggedEnum Left|Bottom}" />
2.アタッチされたプロパティは任意のタイプである可能性があるため、もちろん、複雑なタイプ(複数のサブプロパティを持つ)またはコレクションである可能性もあります。したがって、次のようなことを簡単に行うことができます。
MyCustomPanelOrWhatever.SetMultiDock(new List<MultiDock> { MultiDock.Left, MultiDock.Bottom });
アタッチされたプロパティをそのように定義した場合、xamlのコンバーターは必要なく、直接使用できます。
<CheckBox>
<src:MyCustomPanelOrWhatever.MultiDock>
<src:MultiDock.Left/>
<src:MultiDock.Bottom/>
</src:MyCustomPanelOrWhatever.MultiDock>
</CheckBox>