C# 当ContentControl隐藏时呈现时,ListView项的宽度为0

C# 当ContentControl隐藏时呈现时,ListView项的宽度为0,c#,wpf,listview,contentcontrol,C#,Wpf,Listview,Contentcontrol,当ListView所在的ContentControl被隐藏时,我对它有一个问题 我的程序在玩家连接聊天服务器时使用XMPP和更新。当有人连接ContentControl时,ContentControl可见时,如下所示: 但是,如果它们连接并且ContentControl在呈现时不可见(一旦设置为再次可见): 但是,如果将鼠标悬停在正确的位置,可以看到控件仍然存在,只是没有渲染: 这是我的用户控件: <UserControl x:Class="LegendaryClient.Contr

当ListView所在的ContentControl被隐藏时,我对它有一个问题

我的程序在玩家连接聊天服务器时使用XMPP和更新。当有人连接ContentControl时,ContentControl可见时,如下所示:

但是,如果它们连接并且ContentControl在呈现时不可见(一旦设置为再次可见):

但是,如果将鼠标悬停在正确的位置,可以看到控件仍然存在,只是没有渲染:

这是我的用户控件:

<UserControl x:Class="LegendaryClient.Controls.ChatPlayer"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d"
             Height="50" Width="250">
    <Grid>
        <Rectangle Fill="#02000000" />
        <!-- Allow entire control to be hovered over -->
        <Image x:Name="ProfileImage" HorizontalAlignment="Left" Height="40" Margin="5,5,0,0" VerticalAlignment="Top" Width="40" Source="/LegendaryClient;component/Icon.ico" />
        <Label x:Name="LevelLabel" Content="30" HorizontalAlignment="Left" Margin="5,20,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="SemiBold">
            <Label.Effect>
                <DropShadowEffect ShadowDepth="2" BlurRadius="1" />
            </Label.Effect>
        </Label>

        <Label x:Name="PlayerName" Content="Snowl" HorizontalAlignment="Left" Margin="45,0,0,0" VerticalAlignment="Top" FontWeight="Bold" Foreground="White" />
        <Label x:Name="PlayerStatus" Content="Test status" HorizontalAlignment="Left" Margin="45,20,0,0" VerticalAlignment="Top" Foreground="White" />
    </Grid>
</UserControl>

和我的渲染功能:

if (Client.UpdatePlayers)
{
    Client.UpdatePlayers = false;

    ChatListView.Items.Clear();
    foreach (KeyValuePair<string, ChatPlayerItem> ChatPlayerPair in Client.AllPlayers.ToArray())
    {
        if (ChatPlayerPair.Value.Level != 0)
        {
            ChatPlayer player = new ChatPlayer();
            player.Width = 250;
            player.Tag = ChatPlayerPair.Value;
            player.PlayerName.Content = ChatPlayerPair.Value.Username;
            player.LevelLabel.Content = ChatPlayerPair.Value.Level;
            player.PlayerStatus.Content = ChatPlayerPair.Value.Status;
            var uriSource = new Uri(Path.Combine(Client.ExecutingDirectory, "Assets", "profileicon", ChatPlayerPair.Value.ProfileIcon + ".png"), UriKind.RelativeOrAbsolute);
            player.ProfileImage.Source = new BitmapImage(uriSource);
            player.ContextMenu = (ContextMenu)Resources["PlayerChatMenu"];
            player.MouseMove += ChatPlayerMouseOver;
            player.MouseLeave += player_MouseLeave;
            ChatListView.Items.Add(player);
        }
    }
}
if(Client.UpdatePlayers)
{
Client.UpdatePlayers=false;
ChatListView.Items.Clear();
foreach(Client.AllPlayers.ToArray()中的KeyValuePair ChatPlayerPair)
{
如果(ChatPlayerPair.Value.Level!=0)
{
ChatPlayer=新的ChatPlayer();
播放器宽度=250;
player.Tag=ChatPlayerPair.Value;
player.PlayerName.Content=ChatPlayerPair.Value.Username;
player.LevelLabel.Content=ChatPlayerPair.Value.Level;
player.PlayerStatus.Content=ChatPlayerPair.Value.Status;
var uriSource=new Uri(Path.Combine(Client.ExecutingDirectory,“Assets”,“profileicon”,ChatPlayerPair.Value.profileicon+”.png),UriKind.RelativeOrAbsolute);
player.ProfileImage.Source=新的位图图像(uriSource);
player.ContextMenu=(ContextMenu)资源[“PlayerChatMenu”];
player.MouseMove+=ChatPlayerMouseOver;
player.MouseLeave+=player_MouseLeave;
ChatListView.Items.Add(播放器);
}
}
}