Question

I have a simple .Net enum. I also have a view model object which has a "CurrentValue" property of the type of my enum. This property can be data-bound (the object implements INotifyPropertyChanged). Now I'd like to show one UI element for each value of the enum, in a specific order, and have the "CurrentValue" highlighted (bold). I would like the declaration to be something like:

<StackPanel Orientation="Vertical">               
    <ContentControl Content="{x:Static MyEnum.Value1}" />
    <ContentControl Content="{x:Static MyEnum.Value2}" Margin="10" />
    <ContentControl Content="{x:Static MyEnum.Value3}" />
</StackPanel>

I'd like to declare each value individually, to specify the order, but also because I want some of the elements to have specific margin values. Also, I will want to display specific icons for each value later on.

Now I'm lost as to how I can declare that I want the control associated with the CurrentValue to be bold. I tried using a generic DataTrigger inside a template to check the content against the CurrentValue, but it seems the Value of a trigger cannot be a binding.

I also considered going for a disabled ListBox, but then I can't have specific margins for specific items. Or can I?

Was it helpful?

Solution

Try this on for size...

<ListBox>
  <ListBoxItem><local:MyEnum>Value1</local:MyEnum></ListBoxItem>
  <ListBoxItem Margin="10"><local:MyEnum>Value2</local:MyEnum></ListBoxItem>
  <ListBoxItem><local:MyEnum>Value3</local:MyEnum></ListBoxItem>
</ListBox>

You'll need to map the local xmlns to your CLR namespace.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top