私のWP7アプリケーションでは、ピボットアイテムのヘッダテンプレートに配置した日付コントロールを見つける必要があります。 現在選択されているPivotItemのコードビハインドでこのdatepickerコントロールにアクセスするにはどうすればよいですか?WP7はピボットアイテムのヘッダの中にコントロールを見つける
public static T FindName<T>(string name, DependencyObject reference) where T : FrameworkElement
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentNullException("name");
}
if (reference == null)
{
throw new ArgumentNullException("reference");
}
return FindNameInternal<T>(name, reference);
}
private static T FindNameInternal<T>(string name, DependencyObject reference) where T : FrameworkElement
{
foreach (DependencyObject obj in GetChildren(reference))
{
T elem = obj as T;
if (elem != null && elem.Name == name)
{
return elem;
}
elem = FindNameInternal<T>(name, obj);
if (elem != null)
{
return elem;
}
else
{
//if (obj.GetType().FullName == "System.Windows.Controls.DataField")
// elem = (obj as DataField).Content as T;
if (elem != null && elem.Name == name)
return elem;
}
}
return null;
}
private static IEnumerable<DependencyObject> GetChildren(DependencyObject reference)
{
int childCount = VisualTreeHelper.GetChildrenCount(reference);
if (childCount > 0)
{
for (int i = 0; i < childCount; i++)
{
yield return VisualTreeHelper.GetChild(reference, i);
}
}
}
devcube、質問の更新サンプルをご覧ください。私はこのコードを使って日付ピッカーを探していますが、これは次のようなものを使って呼び出すと、常にピボットアイテムからピボットアイテムを取得します。 –
私が使用している場合 - RadDatePicker radDatePicker = VisualElementHelper.FindName( "radDatePicker"、CurrentPivotItem); CurrentPivotItemがPivotControlのSelectedItemに設定されている場合、null参照が返されます。 :( –