2010-11-16 46 views
0

所以現在我可以訪問隱藏在嵌套數據模板中的控件,似乎我無法更改它們的值。比如我的代碼(由堆棧溢出成員慷慨地給予我)WPF更改數據模板中的控件?

<Grid Name="mainGrid"> 
    <Grid.Resources> 
    <DataTemplate x:Key="frontTemplate" > 
     <StackPanel x:Name="noWork"> 
      <Image Source="Images/1.png" Stretch="Fill" Width="72" Height="96" x:Name="FrontFace" HorizontalAlignment="Left" VerticalAlignment="Top"></Image> 
     </StackPanel> 
    </DataTemplate> 

    <DataTemplate x:Key="flipItemTemplate"> 
     <Grid Width="200" Height="200"> 

      <Border x:Name="frontHost" Background="Transparent"> 
       <ContentPresenter Name="contentPresenter" Content="{Binding}" ContentTemplate="{StaticResource frontTemplate}" /> 
      </Border> 
     </Grid> 
    </DataTemplate> 
    </Grid.Resources> 
</Grid> 

雖然我可以在第二個模板(frontFace)得到的圖像,我不能得到源改變。我可以得到一個新的位圖,並加載它沒有錯誤,但圖像不會改變。如果我將圖像控件放在數據模板之外的XAML中,並使用我的位圖代碼加載它,則它可以正常工作。這導致我相信模板在應用後不能重繪自己......但是我無法訪問它的內部元素,直到它被應用爲止......那麼我怎樣才能動態地設置元素應用之前的模板?

回答

0

模板重複其內容。您正在訪問模板的Image元素,而不是內容展示器中的元素。

+0

那麼,如何設置模板的內容之前,它獲得重複/呈現?這是我的問題..雞和雞蛋的交易。但據我所知,在應用它之前,你無法訪問模板中的元素,因爲視覺樹還沒有被創建,對嗎? – Dan 2010-11-16 20:04:47

+0

將「Image」元素的'Source'綁定到數據對象的屬性。該屬性必須是一個'ImageSource'或者可以由轉換器轉換爲'ImageSource'。 – 2010-11-16 20:44:01

+0

而這種方式上的負載,我可以操縱數據對象,自從其綁定,將操縱模板中的元素 - 好吧,我會給這個鏡頭... – Dan 2010-11-17 14:29:21