Going through my WPF backblog...

I use this post as a bookmark as much for myself as for others.

Mike Hillberg talks about the Loaded and Initialized event, as well as about Trace sources in WPF.

Ads

How to show different text based on an enum value?

This question was asked on the MSDN forums, so I thought I'd replciate it here for everybody's benefit.

When you want to bind to a value that's an enumeration, sometimes you want to show specific text. While writting a converter is one way of solving this problem, it requires writting code. And no code is of better quality than the one you don't write.

So here's the sample I posted.

MainWindow.xaml:

    1 <Window x:Class="MsdnForums.TextBlockBoundToEnum.MainWindow"

    2     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    3     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    4     xmlns:local="clr-namespace:MsdnForums.TextBlockBoundToEnum"

    5     Title="TextBlockBoundToEnum" Height="300" Width="300"

    6     >

    7     <!-- Forums: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1107413&SiteID=1 -->

    8     <DockPanel>

    9         <StackPanel DockPanel.Dock="Right">

   10             <TextBlock>Current CurState value:</TextBlock>

   11             <Button Click="HandleGoodButtonClick">Good</Button>

   12             <Button Click="HandleBadButtonClick">Bad</Button>

   13             <Button Click="HandleUglyButtonClick">Ugly</Button>

   14         </StackPanel>

   15         <TextBlock>

   16             <TextBlock.Style>

   17                 <Style TargetType="{x:Type TextBlock}">

   18                     <Style.Triggers>

   19                         <DataTrigger Binding="{Binding Path=CurState}" Value="Good">

   20                             <Setter Property="TextBlock.Text" Value="That was a good one!" />

   21                         </DataTrigger>

   22                         <DataTrigger Binding="{Binding Path=CurState}" Value="Bad">

   23                             <Setter Property="TextBlock.Text" Value="That's no good!" />

   24                         </DataTrigger>

   25                         <DataTrigger Binding="{Binding Path=CurState}" Value="Ugly">

   26                             <Setter Property="TextBlock.Text" Value="Ooooooooooh look at hiiiim!" />

   27                         </DataTrigger>

   28                     </Style.Triggers>

   29                 </Style>

   30             </TextBlock.Style>

   31         </TextBlock>

   32     </DockPanel>

   33 </Window>

MainWindow.cs

    1 using System;

    2 using System.Windows;

    3 

    4 namespace MsdnForums.TextBlockBoundToEnum

    5 {

    6     public partial class MainWindow : System.Windows.Window

    7     {

    8         private MyDataContext myDataContext;

    9         public MainWindow()

   10         {

   11             InitializeComponent();

   12             this.DataContext = myDataContext = new MyDataContext();

   13         }

   14         public void HandleGoodButtonClick(object source, RoutedEventArgs e)

   15         {

   16             myDataContext.CurState = APP_STATE.Good;

   17         }

   18         public void HandleBadButtonClick(object source, RoutedEventArgs e)

   19         {

   20             myDataContext.CurState = APP_STATE.Bad;

   21         }

   22         public void HandleUglyButtonClick(object source, RoutedEventArgs e)

   23         {

   24             myDataContext.CurState = APP_STATE.Ugly;

   25         }

   26     }

   27     public class MyDataContext : DependencyObject

   28     {

   29         public APP_STATE CurState

   30         {

   31             get { return (APP_STATE)GetValue(CurStateProperty); }

   32             set { SetValue(CurStateProperty, value); }

   33         }

   34         public static readonly DependencyProperty CurStateProperty =

   35             DependencyProperty.Register("CurState", typeof(APP_STATE), typeof(MyDataContext), new UIPropertyMetadata(APP_STATE.Good));

   36     }

   37     public enum APP_STATE

   38     {

   39         Good,

   40         Bad,

   41         Ugly

   42     }

   43 }

Ads

To profile your WPF applications

Tim Cahill talks about profiling your WPF application. Not a new post but one worth knowing, bookmarking and using!

Ads