English 中文(简体)
交换WPF中的数据来源
原标题:Switching the Binding Source of DataGrid in WPF

我认为,有数据单,其<代码>ItemsSource受3个不同文件夹的档案清单的约束。

是否可能从方案上改变具有约束力的来源?

E.g. for the first click ItemsSource="{Binding FileList}
and for the second click ItemsSource="{Binding FileList1}

Is this possible in the same DataGrid? I m following MVVM and i use Prism.

最佳回答

Yes it is possible to change the data context on click or on some other action.. You said that you are using MVVM prism... here is a sample i have created to assist you..

In this sample my source(in your case it is datagrid) itemssource property will always binded to a property "Sourcelist" and on click i am re assigning the Sourcelist to diffrent list.. so on every click we are reassigning the sourcelist property which is binded to datagrid or list

class Viewmodel : ViewModelBase
    {
        public Viewmodel()
        {
            ChangeDataSource = new DelegateCommand<object>(ChagneDataSource);
            Filelist1 = new FileListOne();
            FileList2 = new FileListTwo();
            Filelist1.Files = new List<string>();
            FileList2.Files = new List<string>();
            for (int i = 0; i < 10; i++)
            {
                Filelist1.Files.Add("FileListOne " + i);
                FileList2.Files.Add("FileListTwo " + i);
            }

            Sourcelist = Filelist1;
        }

        private object _sourcelist;

        public object Sourcelist
        {
            get
            {
                return _sourcelist;
            }
            set
            {
                _sourcelist = value;
                OnPropertyChanged("Sourcelist");
            }
        }


        public ICommand ChangeDataSource { get; set; }

        public FileListOne Filelist1 { get; set; }

        public FileListTwo FileList2 { get; set; }

        private void ChagneDataSource(object seder)
        {
            if (Sourcelist.GetType() == typeof(FileListOne))
                Sourcelist = FileList2;
            else
                Sourcelist = Filelist1;
        }
    }

    class FileListOne
    {
        public List<string> Files { get; set; }
    }


    class FileListTwo
    {
        public List<string> Files { get; set; }
    }

XAML

<StackPanel>
        <ListBox x:Name="listbox2" ItemsSource="{Binding Sourcelist.Files}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <Button x:Name="button" Content="Button" Command="{Binding ChangeDataSource}"/>

    </StackPanel>
问题回答

XAML snippets刚才翻译为:

dataGrid.SetBinding(DataGrid.ItemsSourceProperty, new Binding("FileList"));

你们需要随时了解实地发生点击次数多的情况,而且你还需要参考数据组。 (可通过http://msdn.microsoft.com/en-us/library/ee795380.aspx” rel=“nofollow”>codex:Reference,并储存在Button scode>Tag或上 如果你使用更有可能与MVVM i suppose相比的指挥系统





相关问题
WPF convert 2d mouse click into 3d space

I have several geometry meshes in my Viewport3D, these have bounds of (w:1800, h:500, d:25). When a user clicks in the middle of the mesh, I want the Point3D of (900, 500, 25)... How can I achieve ...

Editing a xaml icons or images

Is it possible to edit a xaml icons or images in the expression design or using other tools? Is it possible to import a xaml images (that e.g you have exported) in the expression designer for editing?...

WPF: writing smoke tests using ViewModels

I am considering to write smoke tests for our WPF application. The question that I am faced is: should we use UI automation( or some other technology that creates a UI script), or is it good enough to ...

WPF - MVVM - NHibernate Validation

Im facing a bit of an issue when trying to validate a decimal property on domain object which is bound to a textbox on the view through the viewmodel. I am using NHibernate to decorate my property on ...

How do WPF Markup Extensions raise compile errors?

Certain markup extensions raise compile errors. For example StaticExtension (x:Static) raises a compile error if the referenced class cannot be found. Anyone know the mechanism for this? Is it baked ...

WPF design-time context menu

I am trying to create a custom wpf control, I m wondering how I can add some design-time features. I ve googled and can t seem to get to my goal. So here s my simple question, how can I add an entry ...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...