2008年6月25日水曜日

DataGridのソート

beta 2 になってDataGridがソート可能になったようなので試してみた。

ここ
Sorting Data in the Silverlight DataGrid
に書いてある通り、DataGrid#ItemsSourceに渡すオブジェクトとしてIListを実装しているものを渡せばいいらしい。

↓のチュートリアルで表示しているDataGridをソート可能にするには、
Silverlight Tutorial Part 3: Using Networking to Retrieve Data and Populate a DataGrid

↓のように ToList とすればよい。
XDocument xmlStories = XDocument.Parse(xmlContent);

var stories = (from story in xmlStories.Descendants("story")
              where story.Element("thumbnail") != null
              select new DiggStory()
              {
                  Id = (int)story.Attribute("id"),
                  Title = (String)story.Element("title"),
                  Description = (String)story.Element("description"),
                  ThumbNail = (String)story.Element("thumbnail"),
                  HrefLink = (String)story.Attribute("link"),
                  NumDiggs = (int)story.Attribute("diggs")
              }).ToList<DiggStory>();  // ← ここ

dgStories.ItemsSource = stories;

DataGrid を使うには、参照 System.Windows.Controls.Data を追加する必要がある。
さらに XAML には、
xmlns:d="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
の記述を追加しておく。

2008年6月24日火曜日

Binding ElementName は無い

Silverlightでは以下のようなデータバインディングが出来ない。
<StackPanel
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

  <Slider Name="slider1" Width="200"/>
  <TextBox Width="80">
    <Binding ElementName="slider1" Path="Value"/>
  </TextBox>
</StackPanel>
(参考:データバインディング(WPF)

Workaroundは↓。
Workaround for missing ElementName in Silverlight 2.0 Binding
ただ、いずれSilverlightでも実装されるんじゃないかなと期待。

Silverlight 2 beta 2 を触ってみて

beta 1 との違いはここに書いてある。
Breaking Changes Between Beta 1 and Beta 2
ここによると・・・
  1. ToolTip の使い方が変わったようだ。ToolTipServiceを使うみたい。
  2. <Button Content="Button">
        <ToolTipService.ToolTip>
            <StackPanel>
                <Button x:Name="btnToolTip" Content="A Button ToolTip"></Button>
            </StackPanel>
        </ToolTipService.ToolTip>
    </Button>
    
    ↑でToolTip にボタンも表示出来る。ただ ToolTip 上のボタンをクリックできない・・・。何か設定すれば出来るのかも。
  3. WatermarkedTextBoxが使えなくなった
  4. 何故か削除されたみたい。beta 1 までは System.Windows.Controls.Extended の参照を追加すれば使えたのに。 workaroundとして以下のページでソースが公開されている。 WatermarkedTextBox control for Silverlight 2 beta 2 まだ動かしてないけどUserControlの勉強にもなるかも。