gpt4 book ai didi

c# - 将用户控件堆栈面板绑定(bind)到 WPF 中的可观察集合

转载 作者:太空狗 更新时间:2023-10-29 21:28:59 26 4
gpt4 key购买 nike

我正在尝试创建一个联系人列表用户控件,其中堆栈面板绑定(bind)到 LoggedInUserObservableCollection

用户控制:

<UserControl.Content>
<Grid>
<Border BorderBrush="LightBlue" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8" Height="350" HorizontalAlignment="Left" VerticalAlignment="Top" Width="290">
<ItemsControl x:Name="tStack" Grid.Column="0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Height="30" Content="{Binding Username}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
</Grid>
</UserControl.Content>

背后的用户控制代码

public partial class ContactList : UserControl
{
public ContactList()
{
InitializeComponent();

ContactListViewModel clvm = ContactListViewModel.GetInstance();

clvm.Contacts.Add(new LoggedInUser("test", "123"));

this.DataContext = clvm.Contacts;
}
}

还有我的 ContactListViewModel

class ContactListViewModel
{
private static ContactListViewModel instance;

public ObservableCollection<LoggedInUser> Contacts = new ObservableCollection<LoggedInUser>();

public static ContactListViewModel GetInstance()
{
if (instance == null)
instance = new ContactListViewModel();

return instance;
}
}

LoggedInUser 类,以防万一

public class LoggedInUser
{
private string username;
public string Username
{
get { return username; }
set { username = value; }
}
}

我的堆栈面板仍然是空的!帮助!

最佳答案

您还没有绑定(bind) ItemsControlItemsSource,因此它实际上没有数据。您的数据上下文是集合,因此您只需执行以下操作:

<ItemsControl ItemsSource="{Binding}" ...

或者,如果您改为将数据上下文设置为 View 模型实例(这是 MVVM 的惯例),您可以这样做:

<ItemsControl ItemsSource="{Binding Contacts}" ...

关于c# - 将用户控件堆栈面板绑定(bind)到 WPF 中的可观察集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11675511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com