мне нужно отобразить с привязкой к данным данных в ListView таким образом, что некоторые из клеток одного и того же столбца, подчеркнуты, а другие нет:WPF ListView столбец текста Некоторые Ряды Подчеркнуто Некоторые не
Как создать шаблон данных который будет отображать разные типы управления в одной и той же ячейке? (Visual Studio 2013, .NET 4.5.2)
XAML:
<ListView Grid.Column="3" ItemsSource="{Binding Results.MyItemSource, Mode=OneWay}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Width="Auto" Header=" " DisplayMemberBinding="{Binding Path=Caption, Mode=OneWay}"/>
<GridViewColumn Width="Auto" Header=" " DisplayMemberBinding="{Binding Path=Value, Mode=OneWay}" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
ItemSource:
public List<object> MyItemSource
{
get
{
return new List<object>
{
new CaptionValuePair {Caption = "Caption1", Value = new TextBlock {Text = "Value1"}},
new CaptionValuePair {Caption = "Caption2", Value = new TextBlock {Text = "Value2", TextDecorations = TextDecorations.Underline}}
};
}
}
Bound Тип:
public class CaptionValuePair
{
public string Caption { get; set; }
public object Value { get; set; }
}
Проблема: StackPanel только отображение тип текстового блока.
Я не думаю, что ваша вторая колонка может отображать ничего. «StackPanel» - пустой контейнер. Как он мог показать текст? Он должен содержать некоторые такие, как «TextBlock» или «ContentPresenter», ... вы должны обновить свой код, чтобы точно отразить то, что у вас есть на вашей стороне. – Hopeless
@Hopeless: я начал пробовать TextBlock вместо StackPanel, но связанный объект предоставляет свойство UIElement для значения Value, и я обнаружил, что TextBlock просто отображает тип связанного UIElement, а не содержимое. Поэтому я надеялся, что StackPanel сможет справиться с этой задачей. Во всяком случае, у меня есть рабочее решение (см. Сообщение ниже). –