C# 如何在RadGridView的一行中填充数据?

C# 如何在RadGridView的一行中填充数据?,c#,wpf,telerik-grid,C#,Wpf,Telerik Grid,我想从网格中保存和加载设置。保存设置时,此设置将保存在文件中。当我加载时,设置将再次放置在网格中。只有数据未显示在网格中。原因是什么 xaml.cs: namespace WpfApplication1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window {

我想从网格中保存和加载设置。保存设置时,此设置将保存在文件中。当我加载时,设置将再次放置在网格中。只有数据未显示在网格中。原因是什么

xaml.cs:

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        string fileName = @"C:\temp\myFile.txt";
        private Stream stream;

        public MainWindow()
        {
            InitializeComponent();
            InitializeSettings();
            InitializeDataContext();
        }

        private void InitializeSettings()
        {
            using (var filestream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read))
            {
                PersistenceManager manager = new PersistenceManager();
                manager.Load(filestream);
            }
        }

        private void InitializeDataContext()
        {
            DataContext = new ViewModel();
        }

        private void Window_Closing(object sender, CancelEventArgs e)
        {
            PersistenceManager manager = new PersistenceManager();
            stream = manager.Save(myGrid);
            using (var fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
            {
                stream.CopyTo(fileStream);
            }
        }
    }
}
命名空间WpfApplication1
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
字符串文件名=@“C:\temp\myFile.txt”;
私有流;
公共主窗口()
{
初始化组件();
初始化设置();
初始化的TacContext();
}
私有无效初始化设置()
{
使用(var filestream=newfilestream(文件名,FileMode.OpenOrCreate,FileAccess.Read))
{
PersistenceManager=新建PersistenceManager();
加载(文件流);
}
}
private void InitializeDataContext()
{
DataContext=新的ViewModel();
}
私有无效窗口\u关闭(对象发送方,取消事件参数)
{
PersistenceManager=新建PersistenceManager();
stream=manager.Save(myGrid);
使用(var fileStream=newfilestream(文件名,FileMode.Create,FileAccess.Write))
{
CopyTo(fileStream);
}
}
}
}
xaml文件:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
        xmlns:local="clr-namespace:WpfApplication1"
        Title="MainWindow"
        Height="350"
        Width="525"
        Closing="Window_Closing">
    <StackPanel x:Name="LayoutRoot">
        <telerik:RadGridView x:Name="myGrid"
                             IsReadOnly="False"
                             ItemsSource="{Binding Path=Afspraken, Mode=OneWay}"
                             AddingNewDataItem="myGrid_AddingNewDataItem"
                             RowEditEnded="myGrid_RowEditEnded"
                             AutoGenerateColumns="False"
                             CanUserSortColumns="True"
                             CanUserResizeColumns="True"
                             telerik:PersistenceManager.StorageId="myGrid">
            <telerik:RadGridView.Columns>
                <telerik:GridViewDataColumn UniqueName="Afspraak"
                                            Header="Afspraak"
                                            DataMemberBinding="{Binding Path=Omschrijving, Mode=OneWay}"/>
                <telerik:GridViewDataColumn UniqueName="Taak"
                                            Header="Taak"
                                            DataMemberBinding="{Binding Path=Opdracht, Mode=OneWay}"/>
                <telerik:GridViewDataColumn UniqueName="UniqueIdea"
                                            Header="Unique Idea"
                                            DataMemberBinding="{Binding Path=PrimaryId, Mode=OneWay}"/>
            </telerik:RadGridView.Columns>
        </telerik:RadGridView>
    </StackPanel>
</Window>

以及viewmodel:

    public class ViewModel : ViewModelBase
    {
        public ViewModel()
        {
            ReadData();
        }

        public void ReadData()
        {
            afspraken.Add(new Afspraak() { Omschrijving = "Afspraak 1", Opdracht = "Opdracht 1", PrimaryId = 1 });
            afspraken.Add(new Afspraak() { Omschrijving = "Afspraak 2", Opdracht = "Opdracht 2", PrimaryId = 2 });
        }

        private ObservableCollection<Afspraak> afspraken = new ObservableCollection<Afspraak>();
        public ObservableCollection<Afspraak> Afspraken
        {
            get { return afspraken; }
            set
            {
                if (afspraken != value)
                {
                    afspraken = value;
                    OnPropertyChanged("Afspraken");
                }
            }
        }
   }
public类ViewModel:ViewModelBase
{
公共视图模型()
{
ReadData();
}
public void ReadData()
{
Add(新的Afspraak(){Omschrijving=“Afspraak 1”,Opdracht=“Opdracht 1”,PrimaryId=1});
Add(新的Afspraak(){Omschrijving=“Afspraak 2”,Opdracht=“Opdracht 2”,PrimaryId=2});
}
私有ObservableCollection afspraken=新ObservableCollection();
公共可观测集合Afspraken
{
获取{return afspraken;}
设置
{
if(afspraken!=值)
{
afspraken=价值;
不动产变更(“Afspraken”);
}
}
}
}

您不会告诉
PersistenceManager
要加载什么控件,因为您不会将
myGrid
作为参数传递给
PersistenceManager.load()
方法:

using (var filestream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read))
{
    PersistenceManager manager = new PersistenceManager();
    manager.Load(filestream);
}
从中可以看出,对于
TreeView
,它应该是这样的:

private void Load(object sender, RoutedEventArgs e)
{
    stream.Position = 0L;
    PersistenceManager manager = new PersistenceManager();
    manager.Load(treeView, stream);
}

我认为您需要根据您的场景调整此设置。

这还不够。我放置了filestream.Position=0L;在PersistenceManager之前。您是否更改了
manager.Load(filestream)
manager.Load(myGrid,stream)?只是添加流的赋值。位置当然没有帮助。。。