Enumeracje i XAML

6505
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 8 lat
  • Postów:11
0

Witam.

Mam stworzoną kontrolkę MyTreeView, która ma właściwość SelectionMode przyjmującej enumeracje typu TreeViewSelectionMode:

Kopiuj
    public enum TreeViewSelectionMode
    {
        Single,
        Multiple,
        Extended
    }

Chciałbym w XAML-u móc przypisać enumerację do SelectionMode jako prosty string, czyli <MyTreeView SelectionMode = "Multiple" />
Teraz przypisuje w następujący sposób <MyTreeView SelectionMode = "{x:Static TreeViewSelectionMode.Multiple}" />

Co należy zrobić, aby XAML interpretował ciąg znaków jako właściwą enumerację? Trzeba użyć jakiś TypeConverter lub MarkupExtension?

Z góry dziękuję za pomoc.

edytowany 1x, ostatnio: 6505
karoL
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
0

Jak dla mnie to najlepszym sposobem będzie użycie DependencyProperty np. tak;

Kopiuj
     public TreeViewSelectionMode SelectionMode
        {
            get { return (TreeViewSelectionMode)GetValue(SelectionModeProperty); }
            set { SetValue(SelectionModeProperty, value); }
        }

        // Using a DependencyProperty as the backing store for SelectionMode.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty SelectionModeProperty =
            DependencyProperty.Register("SelectionMode", typeof(TreeViewSelectionMode), typeof(MyTreeView), new UIPropertyMetadata(TreeViewSelectionMode.Single));

siararadek
Tak to zrobisz w klasie pole, do którego można się bindować. Pytanie, w jakim celu?
karoL
Nie pole, tylko właściwość do której mogę się bindować owszem, ale jeśli tworzy nawą kontrolkę i doda ja do okna to będzie mógł wybrać pomierzy trzema wartościami

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.