我有 WPF ListView 和 MVVM。ListView 是简单的父子结构的一部分。Parent也是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;
}
}
}