我需要訪問沒有指定寬度的邊框的ActualWidth。我被告知我無法在WinRT上這麼做,所以我使用了Florian-Gl的代理(從here)。從頁面資源訪問命名控件
的事情是,我需要建立這樣的頁面上的資源是代理:
<Page.Resources>
<utils:ActualSizePropertyProxy Element="{Binding ElementName=noteBorder}" x:Name="proxy" />
</Page.Resources>
的問題是,我沒有訪問來自資源noteBorder元素,但我有機會到pageRoot這是頁面本身。
我想我可以玩元素名/路徑來訪問noteBorder。
但是有一些奇怪的東西:
的結構是這樣的:
Page (pageRoot) > Grid > ListView > ListView.ItemTemplate > Grid > Border (noteBorder)
所以,如果我創建在邊境同級別的代理,它不會運行,但如果我將ListView更改爲ItemsControl,它將運行並按預期工作。
如果在邊界的同一水平上具有它,我改變的ElementName到pageRoot它至少會運行。
所以,如果我把noteBorder(甚至當我有機會的話),如果我用一個ListView它不會運行,但將努力在ItemsControl中,在另一方面,如果我有pageRoot它可以通用。
所以問題是:有沒有辦法從資源訪問noteBorder?或者,也許一個方法,從另一個地方,但工作訪問:P
謝謝你的提問即但這不是我要求的。我需要訪問資源部分的控件。我知道我可以通過代碼選擇ActualWidth,但我更喜歡在XAML上這樣做,這就是爲什麼我要這樣做。我的邊框位於ItemTemplate中。 –
好吧,所以一旦你有實際的寬度,你想要做什麼?根據邊框的大小修改其他元素?修改邊框元素本身? 來自MSDN:雖然您不能從XAML設置此屬性,但您可以將觸發器基於其樣式中的值。 有關觸發器的更多信息:http://msdn.microsoft.com/en-us/library/system.windows.trigger.aspx –
忘記ActualWidth的東西,只是要知道如果我可以從資源訪問控件,只是。 –