protected override void Render ()
		{
			InlineCollection inlines = Inlines;
			inlines.Clear ();

			TwitterStatusViewer v = Owner;
			if (v == null) return;
			Status s = v.DataContext as Status;
			if (s == null) return;
			Status s1 = s;
			if (s.RetweetedStatus != null)
				s = s.RetweetedStatus;

			FontWeight defWeight = this.FontWeight;
			RoutedEventHandler defLinkHandler = new RoutedEventHandler (v.Hyperlink_Click);
			DependencyProperty nameFg = TwitterStatusViewer.NameForegroundProperty;

			Inlines.Add (v.CreateHyperlink (s.User.ScreenName + " [" + s.User.Name + "]", "/" + s.User.ScreenName, nameFg, defWeight, defLinkHandler));
			if (!string.IsNullOrEmpty (s.InReplyToScreenName)) {
				Inlines.Add (v.CreateTextBlock (" in reply to ", FontWeights.Normal));
				Inlines.Add (v.CreateHyperlink ("@" + s.InReplyToScreenName, "/" + s.InReplyToScreenName + (s.InReplyToStatusId == 0 ? string.Empty : "/status/" + s.InReplyToStatusId.ToString ()), nameFg, defWeight, defLinkHandler));
			}
			if (s != s1) {
				Inlines.Add (v.CreateTextBlock (" retweeted by ", FontWeights.Normal));
				Inlines.Add (v.CreateHyperlink ("@" + s1.User.ScreenName, "/" + s1.User.ScreenName, nameFg, defWeight, defLinkHandler));
			}
			if (s.Source != null) {
				int p1 = s.Source.IndexOf ('>');
				int p2 = s.Source.IndexOf ('<', Math.Max (0, p1));
				string appName = s.Source;
				if (p1 >= 0 && p2 > 0)
					appName = s.Source.Substring (p1 + 1, p2 - p1 - 1);
				p1 = s.Source.IndexOf ('\"');
				p2 = s.Source.IndexOf ('\"', Math.Max (0, p1 + 1));
				Inlines.Add (v.CreateTextBlock (" from ", FontWeights.Normal));
				if (p1 >= 0 && p2 > 0) {
					Inlines.Add (v.CreateHyperlink (appName, s.Source.Substring (p1 + 1, p2 - p1 - 1), nameFg, defWeight, defLinkHandler));
				} else {
					Inlines.Add (appName);
				}
			}
			Inlines.Add (v.CreateTextBlock (" (" + s.CreatedAt.ToString ("MM/dd HH:mm:ss") + ")", FontWeights.Normal));
		}
        protected override void Render()
        {
            InlineCollection inlines = Inlines;

            while (inlines.Count > 1)
            {
                inlines.Remove(inlines.LastInline);
            }

            TwitterStatusViewer v = Owner;

            if (v == null)
            {
                return;
            }
            Status s = v.DataContext as Status;

            if (s == null)
            {
                return;
            }
            Status s1 = s;

            if (s.RetweetedStatus != null)
            {
                s = s.RetweetedStatus;
            }

            // 改行や連続する空白を削除
            string        text  = s.Text;
            StringBuilder sb    = new StringBuilder(text.Length);
            int           state = 0;

            for (int i = 0; i < text.Length; i++)
            {
                char c = text[i];
                if (c == '\r' || c == '\n')
                {
                    continue;
                }
                if (char.IsWhiteSpace(c))
                {
                    if (state == 1)
                    {
                        continue;
                    }
                    state = 1;
                }
                else
                {
                    state = 0;
                }
                sb.Append(text[i]);
            }
            text = sb.ToString();

            // Favoriteアイコン
            ToggleButton favBtn = v.CreateFavoriteButton(s);

            favBtn.Margin = new Thickness(0, 0, 3, 0);
            inlines.Add(favBtn);

            // 名前を追加
            RoutedEventHandler defLinkHandler = new RoutedEventHandler(v.Hyperlink_Click);
            DependencyProperty nameFg         = TwitterStatusViewer.NameForegroundProperty;

            inlines.Add(v.CreateHyperlink(s.User.ScreenName, "/" + s.User.ScreenName, nameFg, FontWeights.Bold, defLinkHandler));
            inlines.Add(" ");

            // 本文を追加
            v.CreateTweetBody(text, inlines);

            // 返信情報を追加
            if (!string.IsNullOrEmpty(s.InReplyToScreenName))
            {
                inlines.Add(v.CreateTextBlock(" in reply to ", FontWeights.Normal, nameFg));
                inlines.Add(v.CreateHyperlink("@" + s.InReplyToScreenName, "/" + s.InReplyToScreenName + (s.InReplyToStatusId == 0 ? string.Empty : "/status/" + s.InReplyToStatusId.ToString()), nameFg, FontWeights.Bold, defLinkHandler));
            }
            if (s != s1)
            {
                inlines.Add(v.CreateTextBlock(" RT by ", FontWeights.Normal, nameFg));
                inlines.Add(v.CreateHyperlink("@" + s1.User.ScreenName, "/" + s1.User.ScreenName, nameFg, FontWeights.Bold, defLinkHandler));
            }
        }