2011-08-07 151 views
1

我以WP7開頭,我試圖更改TexBlock的顏色和其他屬性。它包含在Listbox中並綁定到一個集合。我正在尋找像'OnDataBound'這樣的方式。該值必須根據綁定對象進行更改。更改WP7上Listbox的顏色屬性

<ListBox HorizontalAlignment="Left" Name="listBox1" ItemsSource="{Binding}" > 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <Border BorderBrush="{StaticResource PhoneForegroundBrush}" Width="418" BorderThickness="1" Margin="2"> 
          <StackPanel Orientation="Vertical" > 
           <StackPanel Orientation="Horizontal"><TextBlock Text="Charater: "/><TextBlock Text="{Binding Path=CharacterName}" TextWrapping="Wrap" /></StackPanel> 
           <StackPanel Orientation="Horizontal"><TextBlock Text="Perk launched: "/><TextBlock Text="{Binding Path=CreationDate}" TextWrapping="Wrap"/></StackPanel> 
           <StackPanel Orientation="Horizontal"><TextBlock Text="Finished at: "/><TextBlock Text="{Binding Path=FinishedAt}" TextWrapping="Wrap"/></StackPanel> 
           <StackPanel Orientation="Horizontal"><TextBlock x:Name="TextBlockStatus" Text="Status: "/><TextBlock Text="{Binding Path=Status}" TextWrapping="Wrap"/></StackPanel> 
          </StackPanel> 
         </Border> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

依靠的綁定對象狀態的,我需要改變文字塊的屬性格式(顏色等) 請你告訴我說明一點?

我的綁定是這個follwing(中的.cs):

this.listBox1.DataContext = this.calculatedValues; 

感謝您的幫助

+0

此時,我正在使用Converter(繼承IValueConverter)並返回一個SolidColorBrush,它綁定​​在TextBlock的Forecolor屬性上。這是最好的方法嗎? – Xstahef

回答

1

在這個例子中,如果顏色存儲在被定義爲一類叫時listItems:

public class ListItems 
{ 
    public string name { get; set; } 
    public string color { get; set; } 
} 

類型ListItems的可觀察集合被添加到MainPage文件後面的代碼中:

public partial class MainPage : PhoneApplicationPage 
{ 

    ObservableCollection<ListItems> items = new ObservableCollection<ListItems>(); 
    // Constructor 
    public MainPage() 
    { 
     InitializeComponent(); 

     items.Add(new ListItems() { name = "Item 1", color = "Red" }); 
     items.Add(new ListItems() { name = "Item 2", color = "Blue" }); 
     items.Add(new ListItems() { name = "Item 3", color = "Green" }); 
     items.Add(new ListItems() { name = "Item 4", color = "White" }); 
     items.Add(new ListItems() { name = "Item 5", color = "Purple" }); 

     DataContext = this; 
     listBox1.ItemsSource = items; 
    } 
} 

}

並將ListItem類型的項添加到可觀察集合中。

MainPage.xaml中的文件隨後用於包含有它的ItemTemplate綁定到列表項類的屬性列表框:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
     <ListBox HorizontalAlignment="Left" Margin="12" Width="400" Height="400" Name="listBox1" VerticalAlignment="Top" > 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <TextBlock x:Name="Item" Text="{Binding name}" FontFamily="Arial" FontSize="40" Foreground="{Binding color}" /> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 

完成的頁面看起來是這樣的:

enter image description here

希望這會有所幫助。

+0

謝謝。這是一個很好的解決方案,但我無法更改綁定的實體。但我喜歡這種方法,並儘可能使用它。 – Xstahef