1

基本上,在我的MeasureOverride期間,我想檢查一下,看看我的子元素是否設置了某個屬性,而不管它是什麼類型的項目。WPF - 如何讓我的面板查看DependencyProperty是否在我的孩子被設置爲UIElements時?

public override Size MeasureOverride(Size availableSize) 
{ 
    foreach (UIElement child in InternalChildren) 
    { 
     //Check for IsSelected property? 
    } 
} 

如何做到這一點,以確保孩子有可用的財產,然後得到它的價值?問題是,的UIElement不具有IsSelected屬性和麪板能接受支持該財產的任何孩子,所以我不能只轉換爲特定類型的...


嗯,我在找在兩種可能的情況下:

1)孩子沒有添加自己作爲DependencyProperty的Selector.IsSelected的所有者,在這種情況下,該孩子被完全忽略。 2)孩子確實將自己添加爲Selector.IsSelected DependencyProperty的所有者,在這種情況下,我需要該值。

基本上,我想要IsSelected值,同時也防止我的應用程序崩潰,如果沒有值與該子元素相關聯。

回答

2

您是否在尋找Selector.IsSelected附加屬性的值?如果是這樣,以下可以幫助:

bool isSelected = (bool)child.GetValue(Selector.IsSelectedProperty); 
+0

我這麼認爲...我更新了我的問題,以更好地反映我想要的。但是,是的,理想情況下,子元素*應該*將自己添加爲IsSelected DP的所有者。儘管如此,我想考慮添加子元素的情況(在這種情況下,他們會被忽略)。 – michael 2011-05-20 15:33:36

0

你可以嘗試typeof(child).GetProperty("IsSelected")

有一個MSDN例子here,你可能會發現也有幫助

相關問題