更新日:2011-03-05
ソーシャルネットワーク「mixi(ミクシー)」向けの便利な機能を提供する目的で、
「ミクラク」というアプリを開発しています。
「ミクラク」は、マイミク、足跡の情報を自動で一覧化し、メッセージを便利に
送る機能を提供します。
従来、複数人のマイミクにメッセージを送るとなると、リンクを何度もたどったり
と以外に面倒でした。「ミクラク」を使うと瞬時に複数の方にメッセージを送る
ことができます。
開発ツール:Visual Studio 2008 Express
開発言語:WPF(C#)
DB:XML
ここでは、一部WPFのソースを紹介しています。
ご参考になれば幸いです!!
マイミクリスト画面
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (src01.jpg)
DlgListMyMix.xaml
<UserControl
x:Class="MixRaku.DlgListMyMix"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cstm="clr-namespace:CstmControls;assembly=CstmControls"
xmlns:local="clr-namespace:MixRaku"
Height="600"
Width="1000"
Loaded="Window_Loaded">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="DlgBase.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<UserControl.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFE8E8E5" Offset="0"/>
<GradientStop Color="#FFF6E1BF" Offset="1"/>
</LinearGradientBrush>
</UserControl.Background>
<Grid x:Name="LayoutRoot" Height="600">
<Button Style="{StaticResource BtnStyle}" TabIndex="8" Margin="30,103,0,0" Name="BtnView" Content="閲覧" Click="BtnView_Click" HorizontalAlignment="Left" Width="80" Height="30" VerticalAlignment="Top" />
<Button Style="{StaticResource BtnStyle}" TabIndex="12" Margin="115,103,0,0" Name="BtnSend" Content="送信" Click="BtnSend_Click" HorizontalAlignment="Left" Width="80" Height="30" VerticalAlignment="Top" />
<Button Style="{StaticResource BtnStyle}" TabIndex="12" Margin="200,103,0,0" Name="BtnPrint" Content="印刷" Click="BtnPrint_Click" HorizontalAlignment="Left" Width="80" Height="30" VerticalAlignment="Top" />
<cstm:CstmListView TabIndex="13" FontSize="14" x:Name="listView"
GridViewColumnHeader.Click="GridViewColumnHeader_Click" IsSynchronizedWithCurrentItem="True"
Margin="20,139,0,20" Width="450"
Loaded="listView_Loaded"
ItemContainerStyle="{StaticResource LstStyle}"
HorizontalAlignment="Left">
<ListView.View>
<GridView>
<GridViewColumn HeaderStringFormat="Name" Header="名前" Width="200" CellTemplate="{StaticResource Name}"/>
<GridViewColumn HeaderStringFormat="Id" Header="ID" Width="80" CellTemplate="{StaticResource ID}"/>
</GridView>
</ListView.View>
</cstm:CstmListView>
<Label Style="{StaticResource LblStyle}" Margin="500,20,0,0" Content="件名"/>
<Label Style="{StaticResource LblStyle}" Margin="500,60,0,0" Content="内容"/>
<WindowsFormsHost Margin="500,266,50,20" Name="WindowsFormsHost" Loaded="WindowsFormsHost_Loaded" />
<TextBox Style="{StaticResource TxtStyle}" TabIndex="14" Width ="400" Margin="550,20,0,0" Name="TxtSubject" />
<TextBox Style="{StaticResource TxtStyle}" TabIndex="15" Width ="400" Height="200" Margin="550,60,0,178" Name="TxtMsg" TextWrapping="Wrap" AcceptsReturn="True" />
<GroupBox Header="検索" Height="76" HorizontalAlignment="Left" Margin="12,12,0,0" Name="groupBox1" VerticalAlignment="Top" Width="458">
<Grid>
<Label HorizontalAlignment="Left" Margin="12,12,0,18" Name="lblSearchName" Style="{StaticResource LblStyle}" Width="60">名前</Label>
<TextBox Margin="82,12,214,18" Name="TxtSearch" Style="{StaticResource TxtStyle}" TabIndex="1" />
<Button HorizontalAlignment="Right" Margin="0,12,128,16" Name="BtnSearch" Style="{StaticResource BtnStyle}" TabIndex="2" Width="80" Click="BtnSearch_Click">検索</Button>
<Button HorizontalAlignment="Right" Margin="0,12,42,16" Name="BtnClear" Style="{StaticResource BtnStyle}" TabIndex="3" Width="80" Click="BtnClear_Click">クリア</Button>
</Grid>
</GroupBox>
<Label Height="29" HorizontalAlignment="Left" Margin="357,103,0,0" Name="lblCount" Style="{StaticResource LblStyle}" VerticalAlignment="Top" Width="110" HorizontalContentAlignment="Right">Label</Label>
</Grid>
</UserControl>
ラベルコントロール
属性
| Style |
リソース定義 |
| Margin |
表示位置 |
| Content |
表示名 |
<UserControl
<Label Style="{StaticResource LblStyle}" Margin="500,20,0,0" Content="件名"/>
<Label Style="{StaticResource LblStyle}" Margin="500,60,0,0" Content="内容"/>
</UserControl>
ボタンコントロール
属性
| Style |
リソース定義 |
| Margin |
表示位置 |
| Content |
表示名 |
| TabIndex |
タブの順序 |
| Width |
幅 |
| Height |
高さ |
<UserControl
<Button Style="{StaticResource BtnStyle}" TabIndex="8" Margin="30,103,0,0" Name="BtnView" Content="閲覧" Click="BtnView_Click" HorizontalAlignment="Left"
Width="80" Height="30" VerticalAlignment="Top" />
<Button Style="{StaticResource BtnStyle}" TabIndex="12" Margin="115,103,0,0" Name="BtnSend" Content="送信" Click="BtnSend_Click" HorizontalAlignment="Left"
Width="80" Height="30" VerticalAlignment="Top" />
<Button Style="{StaticResource BtnStyle}" TabIndex="12" Margin="200,103,0,0" Name="BtnPrint" Content="印刷" Click="BtnPrint_Click" HorizontalAlignment="Left" Width="80" Height="30" VerticalAlignment="Top" />
</UserControl>
DlgListMyMix.xaml.cs
/*******************************************************************
*
* システム名 : ミクラク2
* プロジェクト名 : MixRaku
* ファイル名 : DlgListMyMix.xaml.cs
* 機能名 : マイミクリスト画面クラス
* 開発保守履歴 : 2010/06/08 新規作成(r-uchiyama)
*
********************************************************************/
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Xml;
namespace MixRaku
{
/// <summary>
/// マイミクリスト画面クラス
/// </summary>
public partial class DlgListMyMix : UserControl
{
private XmlDocument m_xDoc = new XmlDocument();
private XmlNodeList m_xNodeList = null;
private ListUC m_Uc = new ListUC();
/// <summary>
/// コンストラクタ
/// </summary>
public DlgListMyMix()
{
InitializeComponent();
}
/// <summary>
/// 画面読み込み
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// XMLデータ受信
m_Uc.GetMyMix();
m_xDoc.Load("mymix.xml");
listView.Items.Clear();
// データ表示
LoadData();
// ボタン使用不可
EnableControl(true);
}
/// <summary>
/// コントロールを使用可能/不可に切替
/// </summary>
/// <param name="bFlag"></param>
private void EnableControl(Boolean bFlag)
{
BtnSearch.IsEnabled = bFlag;
BtnSend.IsEnabled = bFlag;
BtnView.IsEnabled = bFlag;
}
/// <summary>
/// リスト表示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listView_Loaded(object sender, RoutedEventArgs e)
{
listView.SelectionMode = SelectionMode.Single;
}
/// <summary>
/// データ表示
/// </summary>
private void LoadData()
{
listView.Items.Clear();
XmlNamespaceManager xNM = new XmlNamespaceManager(m_xDoc.NameTable);
xNM.AddNamespace("smpl", "http://www.w3.org/2005/Atom");
m_xNodeList = m_xDoc.SelectNodes("smpl:feed/smpl:entry", xNM);
for (int i = 0; i < m_xNodeList.Count; i++)
{
Member member = new Member();
member.Name = m_xNodeList.Item(i).SelectSingleNode("smpl:title", xNM).InnerText;
// 名前(前方一致)
if ( !member.Name.StartsWith(this.TxtSearch.Text) )
{
continue;
}
string strId = m_xNodeList.Item(i).SelectSingleNode("smpl:id", xNM).InnerText;
member.Id = strId.Substring(33, strId.Length - 33);
// メンバーID(10桁に整形)
member.Id = String.Format("{0,10}", int.Parse(member.Id));
listView.Items.Add(member);
}
// 件数
this.lblCount.Content = listView.Items.Count + "件";
}
/// <summary>
/// 検索ボタン
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnSearch_Click(object sender, RoutedEventArgs e)
{
// データ表示
LoadData();
}
/// <summary>
/// クリアボタン
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnClear_Click(object sender, RoutedEventArgs e)
{
this.TxtSearch.Clear();
// データ表示
LoadData();
}
/// <summary>
/// 閲覧ボタン
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnView_Click(object sender, RoutedEventArgs e)
{
Member member = (Member)listView.SelectedItems[0];
string id = int.Parse(member.Id).ToString();
m_Uc.View(id);
}
/// <summary>
/// 送信ボタン
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnSend_Click(object sender, RoutedEventArgs e)
{
Member member = (Member)listView.SelectedItems[0];
string id = int.Parse(member.Id).ToString();
m_Uc.Send(id, member.Name, TxtSubject.Text, TxtMsg.Text);
}
/// <summary>
/// カラムヘッダークリック
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GridViewColumnHeader_Click(object sender, RoutedEventArgs e)
{
listView.GridViewColumnHeader_Click(sender, e);
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void WindowsFormsHost_Loaded(object sender, RoutedEventArgs e)
{
WindowsFormsHost.Child = m_Uc;
}
/// <summary>
/// 印刷ボタン
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnPrint_Click(object sender, RoutedEventArgs e)
{
DlgPrint dlg = new DlgPrint(this.listView);
dlg.ShowDialog();
}
}
}
最終更新:2011年03月05日 13:51