我试图填补一个列表视图包含在一个用户控件,但我遇到了一个路障,不知道如何继续。
<UserControl x:Class="AC_Career_Mode.controls.HistoryTab"
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"
xmlns:local="clr-namespace:AC_Career_Mode.controls"
mc:Ignorable="d"
x:Name="RecordsUC"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ListView x:Name="RecordsCtrl_lv" SelectionMode="Single" Grid.Row="1" >
<ListView.View>
<GridView>
<GridViewColumn Width="100" DisplayMemberBinding="{Binding Date, StringFormat=dd-MM-yyyy}">
<GridViewColumnHeader Content="Date" />
</GridViewColumn>
<GridViewColumn Width="600" DisplayMemberBinding="{Binding Description}">
<GridViewColumnHeader Content="Description"/>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<Label Content="{Binding Title}" HorizontalAlignment="Left" Width="403" />
</Grid>
</UserControl>
我的代码后面
public partial class HistoryTab : UserControl
{
public ObservableCollection<Record> Records
{
get { return (ObservableCollection<Record>)GetValue(RecordsProperty); }
set { SetValue(RecordsProperty, value); }
}
public static readonly DependencyProperty RecordsProperty = DependencyProperty.Register("Records", typeof(ObservableCollection<Record>),
typeof(HistoryTab),
new PropertyMetadata(null));
public string Title { get; set; }
public HistoryTab()
{
InitializeComponent();
DataContext = this;
}
}
那么我就像这样调用uc
<uControl:HistoryTab x:Name="test_records" />
然后像这样设置records属性
test_records.Records = new ObservableCollection<Record>(Record.DeserializeRecords(profile));
现在我不知道还有什么我必须做的,我已经谷歌和咨询了许多来源,但要么是超出了我的理解,给什么做或太基本的细节
我访问的一些链接
Passing Generic lists to WPF usercontrol(我不知道答案想让我做什么)
This youtube tutorial(很好,但偏离了我想做的事情)
1条答案
按热度按时间cxfofazt1#
与往常一样,当您要将数据传递给控件时,请使用数据绑定。
我推荐阅读Data binding overview (WPF .NET)来快速了解数据绑定。
您也不应该将自定义控件的
DataContext
或UserControl
设置为自身。这消除了在控件的属性上设置绑定的机会。根本不要设置DataContext
。它将被继承或在控件使用的上下文中显式设置。这允许以下用法:DataContext = this;
仅在WPF根元素中可接受,例如Window
、Page
和Popup
。因为根据定义,这些元素不能有父元素(在可视树中),所以不会有与父数据相关的上下文。首先修复控件的
DataContext
:HistoryTab.xaml.cs
然后将内部
ListView
绑定到父对象的Record
属性: