У меня есть WPF ListView и MVVM.ListView является частью простой родительско-дочерней структуры.Родитель также является элементом управления ListView.Когда я изменяю выбранный элемент в родительском элементе управления, ItemsSource для дочернего элемента управления обновляется.Если, например, в первом ItemsSource самый длинный текст элементов содержит 5 символов, после изменения ItemsSource текст каждого элемента будет виден до 5 символов (в новом ItemsSource).Как я могу переопределить эту проблему?
Пример кода:
<ListView Grid.Row="0" Grid.Column="3" ItemsSource="{Binding Tasks}" Width="200" Height="250" VerticalAlignment="Bottom" SelectionMode="Extended">
<ListView.View>
<GridView>
<GridView.ColumnHeaderContainerStyle>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</GridView.ColumnHeaderContainerStyle>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/>
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListViewItem}}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
Я использую тему BureauBlue, но в любом случае, если я ее не использую, у меня та же проблема.
Часть кода в ViewModel:
private void MyViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "CurrentParentItem")
{
if (this.CurrentParentItem != null)
{
this.Tasks = GetTasks();//ObservableCollection
}
else
{
this.Tasks = null;
}
}
}