2015-01-11 3 views
1

Я новичок в WPF и использую Syncfusion Framework. Я хочу использовать DataTreeControl для отображения иерархии данных, которые будут загружены и обновлены в интервале повторной оккупации. Но по какой-то причине он не отображает данные.Проблемы с синхронизацией GridTreeControl и привязка

Вот отрезала от моего MainWindow.xaml

<syncfusion:TabItemExt Name="_tabItemTipps" Header="Tipps">     
        <syncfusion:GridTreeControl Name="_treeGrid" 
             BorderBrush="LightGray" 
             BorderThickness="0,0.5,0,0" 
             EnableHotRowMarker="False" 
             EnableNodeSelection="True"             
             ExpandStateAtStartUp="AllNodesExpanded" 
             ReadOnly="True" 
             SupportNodeImages="True" 
             VisualStyle="Metro" 
             ItemsSource="SoccerMarkets" 
             > 

         <!-- Code for GridTreeControl Columns --> 
         <syncfusion:GridTreeControl.Columns> 
          <syncfusion:GridTreeColumn HeaderText="Nation" MappingName="{Binding RoughCat}"></syncfusion:GridTreeColumn> 

         </syncfusion:GridTreeControl.Columns> 
        </syncfusion:GridTreeControl> 

Этот фрагмент кода из MainWindow.xaml.cs, где установлена ​​DataContext:

public MainWindow() 
    { 
     DataContext = this; 
     InitializeComponent(); 
     SkinStorage.SetVisualStyle(_tabControl, "Metro"); 
     _settingsVM = new AppSettingsVM(); 


     _txtBetdaqUser.DataContext = _settingsVM; 
     _chkSystemActive.DataContext = _settingsVM; 
     _chkInSimulationMode.DataContext = _settingsVM; 

     _mechanic = new TippMechanic(_settingsVM); 
     _soccerMarketsVM = new SoccerMarketVM(); 

     Task[] tasks = new Task[1]; 
     tasks[0] = Task.Factory.StartNew(async() => await _mechanic.Init());// _mechanic.Init(); 
     Task.WaitAll(tasks); 
     _soccerMarketsVM.SoccerMarkets = _mechanic.SoccerMarketManager.SoccerMarkets; 
     _treeGrid.DataContext = _soccerMarketsVM.SoccerMarkets; 
    } 

Мои ViewModel (_soccerMarketsVM) определяется следующим образом:

class SoccerMarketVM : ObservableObject 
{ 
    private ObservableCollection<SoccerMarket> _soccerMarkets; 

    public ObservableCollection<SoccerMarket> SoccerMarkets 
    { 
     get { return _soccerMarkets; } 
     set 
     { 
      if(_soccerMarkets != null) 
       _soccerMarkets.CollectionChanged -= _soccerMarkets_CollectionChanged; 
      _soccerMarkets = value; 

      _soccerMarkets.CollectionChanged += _soccerMarkets_CollectionChanged; 

     } 
    } 

    public SoccerMarketVM() 
    { 
     //_soccerMarkets = new ObservableCollection<SoccerMarket>(); 
     //_soccerMarkets.CollectionChanged += _soccerMarkets_CollectionChanged; 
    } 

    void _soccerMarkets_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 
    { 
     Console.WriteLine(e.Action.ToString()); 
    } 
} 

События для CollectionChanged увольняются, и я получаю вывод Console.Writeline. Кто-нибудь видит здесь что-то не так?

ответ

2

В GridTreeControl вы можете заполнить данные различными способами. В вашем фрагменте кода ItemsSource, определенный без указания ключевого слова Binding и MappingName, определяется ключевым словом Binding. Но для itemssource вам нужно указать привязку и имя сопоставления, вы можете напрямую присвоить имя свойства без указания привязки. Пожалуйста, обратитесь на ссылку ниже UG населения данных в GridTreeControl,

Ссылка:

http://help.syncfusion.com/ug/wpf/index.html#!Documents/addingthegridtreecontroltoawpfapplication.htm

Elavarasan M - Syncfusion Software.

Смежные вопросы