對於我的WP7應用程序,我需要找到一個日期控件,我已經放置在pivotitem的頭部模板中。 如何在後面的代碼中爲當前選定的PivotItem訪問此日期選擇器控件?WP7在pivotitem頭部找到控件
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,請參閱我在問題中更新的示例。我使用此代碼來查找日期選擇器,但它總是從第一個pivotitem中獲取datepicker,而當我使用類似下面的方法調用時,它不是所選的PivotItem:RadDatePicker radDatePicker = VisualElementHelper.FindName(「radDatePicker」,this); –
2010-11-21 16:59:42
如果我使用 - RadDatePicker radDatePicker = VisualElementHelper.FindName(「radDatePicker」,CurrentPivotItem);其中CurrentPivotItem設置爲PivotControl的SelectedItem,則返回空引用。 :( –
2010-11-21 17:00:56