对于您自己的自定义附加属性,有两个选项可以实现您正在寻找的内容:
1.如果可设置值的组合数量不复杂,您可以将附加属性设置为具有FlagsAttribute集的枚举类型。您可以使用按位或组合要设置的值|
:
[Flags]
public enum MultiDock
{
Left,
Top,
Right,
Bottom
}
及其在代码中的用法:
MyCustomPanelOrWhatever.SetMultiDock(MultiDock.Left | MultiDock.Bottom);
不过,这有一个小问题,您不能直接在 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>