Для ваших собственных пользовательских свойств есть два варианта для достижения того, что вы ищете:
1. Если количество комбинаций настраиваемых значений не является сложным, вы можете сделать ваше присоединенное свойство типа enum с установленным 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>