tmytのらくがき

個人の日記レベルです

ListPickerをScrollViewer上に置くと動かない

ScrollViewerの子にSilverlightToolkitのListPickerを置くとタップしても開かない問題。なんか8月のリリースでおかしくなったらしい。
どうやらまたも既知の不具合らしく、たぶんしばらく直らないので各自修正して使ってね☆という状況みたい。
で、なおしかたですがここのサイトに載ってます。
http://attowares.com/blog/2011/08/23/listpicker-inside-scrollviewer-wp7-toolkit-mango/
http://silverlight.codeplex.com/workitem/9332
コピペで掲載しておくと、ListPicker.csの881行目

if (IsValidManipulation(e.OriginalSource, e.ManipulationOrigin.X, e.ManipulationOrigin.Y) && 0 < Items.Count)
{
   if (Open())
   {
      e.Handled = true;
   }
}

ここを次のように書き換えてリビルド。

Point point = new Point(e.ManipulationOrigin.X, e.ManipulationOrigin.Y);
if (e.ManipulationContainer != e.OriginalSource)
{
   var trans = e.ManipulationContainer.TransformToVisual((UIElement)e.OriginalSource);
   point = trans.Transform(point);
}
 
if (IsValidManipulation(e.OriginalSource, point.X, point.Y) && 0 < Items.Count)
{
   if (Open())
   {
      e.Handled = true;
   }
}