如何在WPF通知图标窗口中动态绑定数据

时间:2016-04-14 06:51:14

标签: sql asp.net wpf c#-4.0 wpf-controls

您好我想在我的任务栏中创建通知图标,当我点击该图标时,会打开一个弹出窗口,弹出窗口显示我今天必须完成哪些任务,并且还想显示今天的约会列表。

enter image description here

质疑

  1. 假设我今天的日期从数据库中获得了10个任务,那么所有任务都应该显示滚动条。

  2. 如何使用WPF控件([textBlock])绑定数据?

  3. 如何动态创建[textBlock]控件意味着假设我从描述列中获取任务描述然后显示,否则描述[textBlock]不会创建。

  4. 我已经通过以下链接来实现这一点。

    http://www.codeproject.com/Articles/36468/WPF-NotifyIcon

    但我真的不知道如何使用WPF应用程序绑定数据。

1 个答案:

答案 0 :(得分:2)

编辑FancyPopup.xaml

添加:

>>> oldlist = ['a','b','c']
>>> newlist = [str(idx + 1) + e for idx, e in enumerate(oldlist)]
>>> print(newlist)
['1a', '2b', '3c']

在后面的代码中,您可以像这样设置视图模型:

<ListView ItemsSource="{Binding TasksCollection, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
        <VirtualizingStackPanel/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding TaskName}"/>
        </DataTemplate>
    <ListView.ItemTemplate/>
</ListView>

然后在你的ViewModel中:

public FancyPopup()
{
    InitializeComponent();
    this.DataContext = new PopupViewModel();
}

其中TaskDataModel是描述数据模型的类。

public ObservableCollection<TaskDataModel> tasksCollection;
public ObservableCollection<TaskDataModel> TasksCollection
{
    get
    {
        if (tasksCollection == null)
        {
            tasksCollection = new ObservableCollection<TaskDataModel>();
        }
        return tasksCollection;
    }
    set
    {
        tasksCollection = value;
        this.OnPropertyChanged("tasksCollection");
    }
}