From acca89315ee8ae3a0c0b4514827eb2cb73808741 Mon Sep 17 00:00:00 2001 From: Konstantin Date: Sat, 2 Feb 2013 15:47:01 +0400 Subject: add Caption to ViewModel --- Juick/Classes/ExpressionHelper.cs | 20 ++++++++++++++++++++ Juick/Juick.csproj | 1 + Juick/ThreadView.xaml | 2 +- Juick/ViewModels/MessageListViewModelBase.cs | 4 +++- Juick/ViewModels/ThreadViewModel.cs | 9 ++++++++- 5 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 Juick/Classes/ExpressionHelper.cs diff --git a/Juick/Classes/ExpressionHelper.cs b/Juick/Classes/ExpressionHelper.cs new file mode 100644 index 0000000..3eb453a --- /dev/null +++ b/Juick/Classes/ExpressionHelper.cs @@ -0,0 +1,20 @@ +using System; +using System.Linq.Expressions; + +namespace Juick.Classes +{ + static class ExpressionHelper + { + public static string GetPropertyName(Expression> propertyExpression) + { + var bodyExpression = propertyExpression.Body; + var unaryExpression = bodyExpression as UnaryExpression; + if (unaryExpression != null) + { + bodyExpression = unaryExpression.Operand; + } + var memberExpression = (MemberExpression)bodyExpression; + return memberExpression.Member.Name; + } + } +} diff --git a/Juick/Juick.csproj b/Juick/Juick.csproj index c330761..c74da5b 100644 --- a/Juick/Juick.csproj +++ b/Juick/Juick.csproj @@ -73,6 +73,7 @@ + diff --git a/Juick/ThreadView.xaml b/Juick/ThreadView.xaml index 7de5533..ebfd166 100644 --- a/Juick/ThreadView.xaml +++ b/Juick/ThreadView.xaml @@ -23,7 +23,7 @@ - + diff --git a/Juick/ViewModels/MessageListViewModelBase.cs b/Juick/ViewModels/MessageListViewModelBase.cs index b9d7070..60c0a94 100644 --- a/Juick/ViewModels/MessageListViewModelBase.cs +++ b/Juick/ViewModels/MessageListViewModelBase.cs @@ -13,6 +13,7 @@ namespace Juick.ViewModels { public class MessageListViewModelBase : INotifyPropertyChanged { + static readonly string IsDataLoadingPropertyName = ExpressionHelper.GetPropertyName(x => x.IsDataLoading); bool isDataLoading; public MessageListViewModelBase() @@ -22,6 +23,7 @@ namespace Juick.ViewModels } public string RestUri { get; set; } + public virtual string Caption { get { return "juick"; } } /// /// A collection for MessageViewModel objects. @@ -36,7 +38,7 @@ namespace Juick.ViewModels set { isDataLoading = value; - NotifyPropertyChanged("IsDataLoading"); + NotifyPropertyChanged(IsDataLoadingPropertyName); LoadMessagesPageCommand.NotifyCanExecuteChanged(); } } diff --git a/Juick/ViewModels/ThreadViewModel.cs b/Juick/ViewModels/ThreadViewModel.cs index 4a80f31..ec1f92d 100644 --- a/Juick/ViewModels/ThreadViewModel.cs +++ b/Juick/ViewModels/ThreadViewModel.cs @@ -1,9 +1,11 @@ -using System; +using Juick.Classes; namespace Juick.ViewModels { public class ThreadViewModel : MessageListViewModelBase { + static readonly string CaptionPropertyName = ExpressionHelper.GetPropertyName(x => x.Caption); + private int _mid; public int Mid { @@ -12,7 +14,12 @@ namespace Juick.ViewModels { _mid = value; RestUri = string.Format("/thread?mid={0}", _mid); + NotifyPropertyChanged(CaptionPropertyName); } } + + public override string Caption { + get { return "#" + _mid; } + } } } -- cgit v1.2.3