У меня есть представление списка, в котором показаны некоторые журналы (типа LogItem).ListView.View установлен в GridView в XAML.GridView имеет два столбца, в которых шаблоны данных для каждого столбца установлены в текстовое поле.Первый столбец привязывается к свойству DateTime объекта LogItem, поэтому для ширины первого столбца можно установить значение «Авто» (предпочтительно) или даже фиксированную ширину, которая мне требуется.
Второй столбец gridview привязывается к сообщению журнала.строка, поэтому она может иметь любую ширину.
Мой вопрос: как я могу убедиться, что весь текст виден в просмотре списка, так что я получаю полосу прокрутки в просмотре списка, если ширина сообщения журнала больше, чем просмотр спискаширина, и что весь текст виден?
В тот момент, когда размер второго столбца кажется установленным первым элементом, добавленным в коллекцию, к которой привязан ListView, тогда ширина никогда не обновляется.Поэтому обычно я просто вижу небольшую часть сообщений журнала, а заголовок второго столбца даже не охватывает всю ширину ListView.
Я искал решение этой проблемы.Кажется, все больше людей задают тот же вопрос, но пока ни один из найденных ответов не решил проблему.Я надеюсь, что кто-то может помочь мне направить меня в правильном направлении, что я пропустил.
XAML-код ниже
<ListView Grid.Row="1"
HorizontalAlignment="Stretch"
IsSynchronizedWithCurrentItem="False"
ItemsSource="{Binding LogItems}"
x:Name="LogListView"
FontSize="14">
<!--:GridViewColumnResize.Enabled="True" -->
<ListView.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Gray" Offset="1"/>
<GradientStop Color="White"/>
</LinearGradientBrush>
</ListView.Background>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Background" Value="{Binding BackColor}"/>
<Setter Property="TextElement.Foreground" Value="White"/>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="Gold" />
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="TextElement.Foreground" Value="Black"/>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="true" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="Gold" />
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="TextElement.Foreground" Value="Black"/>
</MultiTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="{Binding TimeText}" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock x:Name="TimeLabel" Text="{Binding CreationTime, StringFormat='{}{0:hh:mm:ss.fff}'}" Grid.Column="0"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="{Binding MessageText}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Message}" Grid.Column="1"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Редактировать: Полный код xaml pastebin.com / 24HgAcML