2014-02-20 79 views
1

我有一個數據模板,像這樣:編程方式更新XAML數據模板在Windows 8應用

<DataTemplate x:Key="itemTmpl"> 
     <Grid Margin="6"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 

       <Border Height="90" Width="90" Background="#eee" /> 

      <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0"> 
       <TextBlock Text="{Binding Id}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap"/> 
      </StackPanel> 
     </Grid> 
    </DataTemplate> 

我設置列表視圖項源在後面的代碼如下所示:

lv.ItemTemplate = (DataTemplate)this.Resources["itemTmpl"]; 

如何我可以在模板呈現給我的用戶界面之前以編程方式更改邊框背景嗎?

+0

它(背景)取決於項目? – crea7or

回答

1

你可以做幾件事情:

  • 解析視覺樹(使用VisualTreeHelper或擴展方法如WinRTXamlToolkit),發現邊界(可能通過其x:Name),並設置爲背景。
  • 綁定在你的項目
  • 綁定的背景值在你的虛擬機

對於任何兩個綁定的背景值,你可以使用一個轉換器從非刷值轉換到正確的筆刷值(例如,如果您希望它根據是否選中它來更改顏色,則可以選擇bool)。

對於第二次綁定,請確保將Source設置爲您的VM,因爲DataContext將默認爲您的Item。此外,請確保您的Item繼承自INotifyPropertyChanged,以便您的綁定將根據數據更改得到更新。

+0

真的很感謝答覆。不幸的是,沒有一種簡單的方法可以做到這一點。然而虛擬機方法有一定意義。我只是討厭污染你知道的POCO數據模型? – aherrick

+0

有沒有一種簡單的方法來解析可視化樹而不引入依賴關係? – aherrick

+0

使用[VisualTreeHelper.GetChild](http://msdn.microsoft.com/zh-cn/library/windows/apps/windows.ui.xaml.media.visualtreehelper)執行可視化樹的遞歸操作。您可以創建一個輔助方法並將其全部使用。 –

相關問題