繁体   English   中英

UWP:从用户控件中的依赖项属性绑定可观察的集合

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM