ViewModel中的ObservableDictionary未通过xamdatagrid中的绑定显示

时间:2019-09-04 19:16:35

标签: wpf data-binding infragistics

我有一个小的ObservableDictionary WPF,它禁用了xamDataGrid中的数据。我已将代码移至使用MVVM的较大项目。该数据未显示在xamdatagrid中。唯一的区别是视图模型是INotifyPropertyChanged

我相信这是一个数据上下文问题,但我不确定如何解决。

如何更改另一个xamDataGrid的DataContext。在这里为整个网格进行设置:

问题出在xamdataGrid(sDataGrid)。

我没有收到任何错误,但将鼠标悬停在DataSource上表示无法解决。

这是xaml的代码段:

<Window 
        x:Class="Test.View.TestView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:igDP="http://infragistics.com/DataPresenter"        
        xmlns:igRibbon="http://infragistics.com/Ribbon" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Test.View"
        xmlns:igWindows="http://infragistics.com/Windows"  
        xmlns:ig="http://schemas.infragistics.com/xaml" 
        xmlns:igEditors="http://infragistics.com/Editors"
        xmlns:igThemes="http://infragistics.com/Themes"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:viewModel="clr-namespace:Test.ViewModel"
        mc:Ignorable="d"
        Width="1150" Height="1000" Background="Black"
        Title="MainWindow" 
        Loaded="Window_Loaded"
        WindowStartupLocation="CenterScreen">
    <Window.Resources>
        <CollectionViewSource x:Key="categoriesViewSource" d:DesignSource="d:DesignInstance {x:Type local:Categories},CreatList=True}"/>
        <CollectionViewSource x:Key="categoriesProductsViewSource" Source="{Binding Products, Source={StaticResource categoriesViewSource}}"/>

    </Window.Resources>

    <Grid DataContext="{StaticResource categoriesViewSource}" Margin="0,0,0,0">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" MinHeight="0" />
            <RowDefinition Height="150"/>
            <RowDefinition Height="200"/>
            <RowDefinition Height="200"/>
            <RowDefinition Height="50"/>
            <RowDefinition Height="200"/>
        </Grid.RowDefinitions>


       <igDP:XamDataGrid x:Name="aDataGrid" Grid.Row="2" DataSource="{Binding}" RecordActivated="categoriesDataGrid_RecordActivated">
        </igDP:XamDataGrid>


       <igDP:XamDataGrid x:Name="bDataGrid" Grid.Row="3" DataSource="{Binding Source={StaticResource categoriesProductsViewSource}}">
        </igDP:XamDataGrid>

        <igDP:XamDataGrid x:Name="sDataGrid" Grid.Row="5" DataSource="{Binding RunningStatus,Mode=OneWay}" FontSize="12" >

            <igDP:XamDataGrid.FieldLayoutSettings>
                <igDP:FieldLayoutSettings AutoGenerateFields="False"/>
            </igDP:XamDataGrid.FieldLayoutSettings>

            <igDP:XamDataGrid.FieldLayouts>
                <igDP:FieldLayout>
                    <igDP:UnboundField Name="Key" Width="Auto" BindingPath="Key">
                        <igDP:UnboundField.Settings>
                            <igDP:FieldSettings AllowEdit="False"/>
                        </igDP:UnboundField.Settings>
                    </igDP:UnboundField>
                    <igDP:UnboundField Name="Status ID" BindingPath="Value.statusID">
                        <igDP:UnboundField.Settings>
                            <igDP:FieldSettings AllowEdit="False"/>
                        </igDP:UnboundField.Settings>
                    </igDP:UnboundField>



                </igDP:FieldLayout>
            </igDP:XamDataGrid.FieldLayouts>

        </igDP:XamDataGrid>

   </Grid>

</Window>

TestView.xaml.cs

namespace Test.View
{
    public partial class TestView : Window
    {

        TestViewModel viewModel;

        public ProductContext _context = new ProductContext();

        public TestView()
        {
            viewModel = new TestViewModel();
            InitializeComponent();

            DataContext = viewModel;
        }


        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

            try
            {
                 // some code here
            }

            catch (Exception ex)
            {

            }


            System.Windows.Data.CollectionViewSource categoriesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("categoriesViewSource")));


            _context.Categories.Where(x => x.CategoryName.Contains("P")).Load();
            categoriesViewSource.Source = _context.Categories.Local;

        }

     }
}

TestViewModel.cs

namespace Test.ViewModel
{
    public class TestViewModel : INotifyPropertyChanged
    {

        public TestViewModel()
        {
            _runningStatus.Add(1, new Status { statusID = 1, statusMessage = "Failed" });
        }

        public ObservableDictionary<int, Status> _runningStatus = new ObservableDictionary<int, Status>();

        public ObservableDictionary<int, Status> RunningStatus
        {
            get
            {
                return _runningStatus;
            }
        }
     }
}

namespace Test.Model
{
    public class Status
    {
        public int statusID { get; set; }
        public string statusMessage { get; set; }
    }
}

我希望显示ObservableDictionary中的数据。任何帮助将不胜感激。

0 个答案:

没有答案
相关问题