7
我有一個用戶控件,將樣式應用於按鈕,樣式包含ControlTemplate部分。在ControlTemplate中,有各種UI元素,例如Ellipse和Path。WPF從代碼後面設置命名樣式元素?
如果我給這些元素 - 橢圓和路徑 - 帶有x:Name的名稱,我可以從後面的代碼訪問它們嗎?
它似乎風格的橢圓和路徑不可見,因爲我得到一個編譯錯誤(C#)。
我該怎麼做呢?
我有一個用戶控件,將樣式應用於按鈕,樣式包含ControlTemplate部分。在ControlTemplate中,有各種UI元素,例如Ellipse和Path。WPF從代碼後面設置命名樣式元素?
如果我給這些元素 - 橢圓和路徑 - 帶有x:Name的名稱,我可以從後面的代碼訪問它們嗎?
它似乎風格的橢圓和路徑不可見,因爲我得到一個編譯錯誤(C#)。
我該怎麼做呢?
由於模板可以實例化多次,因此無法通過x:Name
綁定生成的成員。相反,您必須在應用於控件的模板中找到指定的元素。
鑑於簡化XAML:
<ControlTemplate x:Key="MyTemplate">
<Ellipse x:Name="MyEllipse" />
</ControlTemplate>
你會做這樣的事情:
var template = (ControlTemplate)FindResource("MyTemplate");
template.FindName("MyEllipse", myControl);
甚至更簡單:
var ellipse = (Ellipse)myControl.Template.FindName("MyEllipse", myControl);
你可以閱讀有關FrameworkTemplate.FindName
。
完美,非常感謝! – MattJ 2009-10-05 19:44:18
如果它是完美的,那麼將其標記爲答案。 – Vaccano 2009-12-28 20:37:35