Для ваших собственных добавленных свойств есть два варианта достижения того, что вы ищете:
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>
person
bitbonk
schedule
08.11.2010