2010-04-09 58 views
4

您好我有以下代碼:如何訪問放置在列表框的數據模板內的控件?

<ListBox x:Name="foldersListBox" Grid.Column="0" MouseLeftButtonUp="foldersListBox_MouseLeftButtonUp" 


          BorderThickness="0" Height="AUTO" 
          ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
          ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
         <DataTemplate> 
          <Border BorderBrush="LightGray" 
          BorderThickness="2" 
          CornerRadius="4"> 
           <Image x:Name="folderImage" Width="70" Height="70" Margin="3" /> 
          </Border> 
         </DataTemplate> 
</ListBox> 

現在,當我試圖從代碼中訪問folderImage後面。我可以使用加載的事件和類型轉換髮件人作爲圖像類型,但我不想那樣,因爲我想在運行時綁定綁定圖像源。所以,即使我們會嘗試加載事件,但由於控件不會被加載,所以它不會起作用。

幫助PLZ。

感謝, Subhen

+0

所以你只是想避免演員? – Pierreten 2010-04-09 05:18:03

+0

不是這樣,但我想在運行時綁定期間綁定圖像源。所以,即使我們會嘗試加載事件,但由於控件不會被加載,所以它不會起作用。 – Simsons 2010-04-09 05:29:57

回答

1

有相當多的細節從你的問題缺少的,但我會在回答反正刺。它與回答您的問題非常不同,但它可以幫助您瞭解需要添加問題以指導答案的詳細信息。反過來這個答案可以被改進。你可能會得到答案的一些迭代。

我想你會綁定到一組代表「文件夾」的對象,但是你希望根據每個對象的狀態以編程方式修改呈現的圖像,例如某些FolderType屬性。

解決此問題的方法是使用值轉換器(如果圖像來自有限集)。

public class FolderToImageConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     Folder folder = value as Folder; 
     ImageSource result; 
     // Logic to determine which ImageSource to use for a folder. 
     return result; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

現在來看看這個XAML: -

<Grid x:Name="LayoutRoot"> 
    <Grid.Resources> 
     <local:FolderToImageConverter x:Key="ImageConverter" /> 
    </Grid.Resources> 
    <ListBox x:Name="foldersListBox"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Border BorderBrush="LightGray" BorderThickness="2" CornerRadius="4"> 
        <Image Source="{Binding Converter={StaticResource ImageConverter}}" Width="70" Height="70" Margin="3" /> 
       </Border> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Grid> 

一旦綁定您的文件夾對象的集合到ListBoxItemsSource它會使用轉換器來轉換Folder顯示一組圖像反對正確的ImageSource實例。

+0

嗨,這是我想要的,最初我的列表框會有不同的圖像。一旦我點擊其中一個圖像(selectedItem),選定的項目就會變成另一個圖像。 – Simsons 2010-04-10 08:09:58

+0

@Subhen:「不同的圖像」精心製作?這組圖像是由源數據中存在的URL決定的?或者,根據數據對象中的數據選擇靜態列出的一組可能的圖像?同樣的「另一個形象」是如何確定的? – AnthonyWJones 2010-04-10 14:07:52

相關問題