Как я могу добавить границу к ListViewItem, ListView в режиме GridView

Я хочу иметь границу вокруг ListViewItem (строка в моем случае). Источник ListView и столбцы сгенерированы во время Времени выполнения. В XAML у меня есть эта структура:

<ListView Name="listViewRaw">
   <ListView.View>
      <GridView>
      </GridView>
   </ListView.View>
</ListView>

Во время Времени выполнения я связываю listview с DataTable, добавляя необходимые столбцы и привязку:

        var view = (listView.View as GridView);
        view.Columns.Clear();   
        for (int i = 0; i < table.Columns.Count; i++)
        {
            GridViewColumn col = new GridViewColumn();
            col.Header = table.Columns[i].ColumnName;
            col.DisplayMemberBinding = new Binding(string.Format("[{0}]", i.ToString()));
            view.Columns.Add(col);
        }

        listView.CoerceValue(ListView.ItemsSourceProperty);

        listView.DataContext = table;
        listView.SetBinding(ListView.ItemsSourceProperty, new Binding());

Таким образом, я хочу добавить границу вокруг каждой строки и установить поведение границы (цвет и т.д.) с DataTriggers (например, если значение в 1-м столбце = "Видимый", цвет рамки набора к черному цвету). Я могу провести границу через DataTemplate в ItemTemplate? Я знаю решение, где Вы управляете с CellTemplates, но мне действительно не нравится он. Я хочу что-то вроде этого если это даже возможное.

<DataTemplate>
   <Border Name="Border" BorderBrush="Transparent" BorderThickness="2">
      <ListViewItemRow><!-- Put my row here, but i ll know about table structure only during runtime --></ListViewItemRow>
   </Border>
</DataTemplate>
6
задан Andrew 12 May 2010 в 07:24
поделиться

1 ответ

Вам придется установить границу в ControlTemplate

<Style x:Key="BorderedItem" TargetType="ListViewItem">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="ListViewItem">
        <Border Name="Border" BorderBrush="Transparent" BorderThickness="2">
          <ContentPresenter />
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Теперь вы можете установить этот стиль в ListView

<ListView ItemContainerStyle="{StaticResource BorderedItem}" />
12
ответ дан 8 December 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: