![](/img/trans.png)
[英]UWP User control: collection changed event of a binded dependency property
[英]UWP : Binding an observable collection from a dependency property in a user control
我在UWP中创建了一个用户控件,并通过具有可观察集合类型的依赖项属性添加了listview绑定。 我在视图中使用了绑定ViewModel的值。 但这不起作用。 我在列表视图中看不到任何实体。 我的用户控件的XAML:
<ListView ItemsSource="{x:Bind TaskLists}"
SelectionMode="None" IsMultiSelectCheckBoxEnabled="False" Name="ListofTasks" >
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate >
<TextBlock x:Name="title" FontWeight="SemiBold"
FontSize="15" Text="{Binding Subject}" Margin="7,5,0,0" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
C#代码背后:
public ObservableCollection<TaskItem> TaskLists
{
get { return (ObservableCollection<TaskItem>)GetValue(TaskListsProperty); }
set { SetValue(TaskListsProperty, value); }
}
// Using a DependencyProperty as the backing store for TaskLists. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TaskListsProperty =
DependencyProperty.Register("TaskLists", typeof(ObservableCollection<TaskItem>), typeof(TaskList), new PropertyMetadata(null));
我的XAML视图中的UserControl用法:
<Controls:TaskList TaskLists="{Binding TodayList ,Mode=TwoWay}" />
查看模型:
class TimeLineViewModel:INotifyPropertyChanged
{
public TimeLineViewModel()
{
for (int i = 0; i < 10; i++)
{
TodayList.Add(new TaskItem() { ID = i, Detail = "Lurem IPsum Very cool app is under dev to be abnormal and very secret " + i, Subject = "This is Title of " + i
, Imprtance = 1, Isdone = 2, Notify = 1, StartTime = DateTime.Now.AddHours(2), Tags= new ObservableCollection<string>() {"Tagone" , "tagtwo","tagThree","TagFour"}
});
}
}
ObservableCollection<TaskItem> TodayList = new ObservableCollection<TaskItem>();
public event PropertyChangedEventHandler PropertyChanged;
}
修正:我的ViewModel错误。 视图模型中的固定代码:
class TimeLineViewModel:INotifyPropertyChanged
{
public TimeLineViewModel()
{
TodayList = new ObservableCollection<TaskItem>();
for (int i = 0; i < 10; i++)
{
TodayList.Add(new TaskItem() { ID = i, Detail = "Lurem IPsum Very cool app is under dev to be abnormal and very secret " + i, Subject = "This is Title of " + i
, Imprtance = 1, Isdone = 2, Notify = 1, StartTime = DateTime.Now.AddHours(2), Tags= new ObservableCollection<string>() {"Tagone" , "tagtwo","tagThree","TagFour"}
});
}
}
public ObservableCollection<TaskItem> TodayList { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.