首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新ItemSource?

如何更新ItemSource?
EN

Stack Overflow用户
提问于 2011-06-08 17:29:02
回答 1查看 169关注 0票数 2

如果DataContext更改TabControl没有反应

代码语言:javascript
复制
<controls:TabControl  x:Name="tabControlRoom"
        ItemsSource="{Binding ElementName=tabControlRoom,
        Path=DataContext, 
        Converter={StaticResource ConverterCollectionToTabItems},
        ConverterParameter={StaticResource MyTabItemContentTemplate}}"   >
</controls:TabControl>

现在我不得不在这里做每一次改变

代码语言:javascript
复制
tabControlRoom.ItemsSource = (IEnumerable)new Restaurant.Helpers.Converter.SourceToTabItemsConverter().Convert(
                tabControlRoom.DataContext,
                null,
                this.Resources["MyTabItemContentTemplate"],
                null);

С转换

代码语言:javascript
复制
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    try
    {
    var context = (WorkSpaceContext) value;

    ControlTemplate controlTemplate = null;
    var date = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, 0, 0);


    if(parameter!=null)
    {
        try
        {
        var listParam = (ObservableCollection<Object>) parameter;
        if(listParam.Count==3)
        {
            controlTemplate = (ControlTemplate)listParam[0];
            date = (DateTime) listParam[1];
            date = date.AddHours(DateTime.Parse(listParam[2].ToString()).Hour);
            date = date.AddHours(DateTime.Parse(listParam[2].ToString()).Minute);
        }
        else if (listParam.Count == 1)
        {

        }
        }
        catch (Exception)
        {


        throw;
        }
    }


    var workPanels = (IEnumerable)context.WorkPanels;
    var rooms = context.Rooms;
    if (workPanels!= null && rooms != null)
    {
        var tabItems = new List<TabItem>();

        foreach (var room in rooms)
        {
        int idRoom = room.id;
        var nowWorkPanels = from wp in context.WorkPanels
                    where wp.date == date && wp.Table.id_room == idRoom
                    select wp;


        string headerText = room.name;


        if (nowWorkPanels.ToList().Count==0)
        {
            var tabItem = new TabItem
                      {
                      DataContext = room,
                      Header = headerText,
                      };
            if (controlTemplate == null) 
            tabItem.Content = (object) room;
            else 
            tabItem.Content = new ContentControl {Template = controlTemplate};
            tabItems.Add(tabItem);
        }
        else 
        {
            var tabItem = new TabItem
            {
            DataContext = nowWorkPanels.ToList(),
            Header = headerText,


            };
            if (controlTemplate == null) 
            tabItem.Content = (object) nowWorkPanels.ToList();
            else 
            tabItem.Content = new ContentControl {Template = controlTemplate};
            tabItems.Add(tabItem);
        }

        }

        return tabItems;
    }
    return new List<TabItem>();
    }
    catch (Exception)
    {
    return null;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2011-06-08 20:22:53

你有没有试过这个:

代码语言:javascript
复制
 <controls:TabControl  x:Name="tabControlRoom"
    ItemsSource="{Binding Converter={StaticResource ConverterCollectionToTabItems},
    ConverterParameter={StaticResource MyTabItemContentTemplate}}"
 >
 </controls:TabControl>

注当绑定没有指定路径时,分配给当前DataContext的对象将成为所使用的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6276696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档