【问题标题】:Problems with Syncfusion GridTreeControl and BindingSyncfusion GridTreeControl 和绑定的问题
【发布时间】:2015-06-23 20:43:32
【问题描述】:

我是 WPF 新手,正在使用 Syncfusion 框架。我想使用 DataTreeControl 来显示数据的层次结构,这些数据将在重复发生的时间间隔内加载和更新。但由于某种原因,它不显示数据。

这是我的 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 的 sn-p:

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 输出。 有人看到这里有问题吗?

【问题讨论】:

    标签: c# wpf xaml syncfusion


    【解决方案1】:

    在 GridTreeControl 中,您可以使用不同的方式填充数据。在您的代码 sn-p 中,未指定 Binding 关键字定义的 ItemsSource 和使用 Binding 关键字定义的 MappingName。但是对于itemssource,你需要指定绑定,对于映射名称,你可以不指定绑定直接分配属性名称。请参考下面GridTreeControl中数据填充的UG链接,

    链接:

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

    Elavarasan M – Syncfusion 软件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多