簡體   English   中英

如何訪問datatemplate生成的列表框中的特定控件

[英]how to access specific control in datatemplate generated listbox

所以我有這樣的dataTemplate生成的列表框:

<ListBox.ItemTemplate>
    <DataTemplate>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Rectangle Fill="{Binding color}" Height="10" Width="10" Grid.Column="1"/>
        <TextBlock Text=" " Grid.Column="2"/>
        <TextBlock Text="{Binding ID}" FontSize="10" FontWeight="Bold" Grid.Column="3"/>
    </Grid>
    </DataTemplate>
</ListBox.ItemTemplate

然后將其綁定到ObservableCollection。 我需要訪問此列表框中的特定項目,並更改其矩形元素的顏色。

我將使用StyleSelector。 制作一個如下的styleselector:

ListViewItemStyleSelector.cs

public class ListViewItemStyleSelector : StyleSelector
{
    public override Style SelectStyle(object item, 
         DependencyObject container)
    {
         Style st = new Style();
         st.TargetType = typeof(ListViewItem);
         Setter backGroundSetter = new Setter();
         backGroundSetter.Property = ListViewItem.BackgroundProperty;
         ListView listView = 
             ItemsControl.ItemsControlFromItemContainer(container) 
              as ListView;
        int index = 
        listView.ItemContainerGenerator.IndexFromContainer(container);
        if (index % 2 == 0)    <-- here your own criteria
        {
            backGroundSetter.Value = Brushes.LightBlue;
        }
        else
        {
            backGroundSetter.Value = Brushes.Beige;
        }
        st.Setters.Add(backGroundSetter);
        return st;
    }  
 }    

使用styleselector

a

<ListView 
      ItemsSource="{Binding Source={StaticResource EmployeeData}, 
                                    XPath=Employee}"
      ItemContainerStyleSelector="{DynamicResource myStyleSelector}" >      
  <ListView.View>
    <GridView>
      <GridViewColumn DisplayMemberBinding="{Binding XPath=FirstName}" 
                  Header="First Name" Width="120"/>
      <GridViewColumn DisplayMemberBinding="{Binding XPath=LastName}" 
                  Header="Last Name" Width="120"/>
      <GridViewColumn DisplayMemberBinding="{Binding XPath=FavoriteCity}" 
                  Header="Favorite City" Width="120"/>
    </GridView>
    </ListView.View>
</ListView>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM