【问题标题】:DataBinding in DataGrid within Tabs选项卡内 DataGrid 中的数据绑定
【发布时间】:2016-04-27 01:27:50
【问题描述】:

我有一个带有以下 TabControl 的主窗口,在 TabItem 内有一个 DataGrid,它应该显示一个部分内的业务,但无法解析部分和网格之间的绑定

代码如下:

MainWindow.cs

public partial class MainWindow : Window {

    static MainWindow () {
        MainCatalog = Catalog.Instance;
    }

    public MainWindow () {
        InitializeComponent();
        DataContext = MainCatalog;
        BusinessesGrid.DataContext = MainCatalog.FoodSection;
    }
}

MainWindow.xaml

<TabControl x:Name="SectionControl" Grid.ColumnSpan="2" HorizontalAlignment="Left" Height="320"
                    VerticalAlignment="Top" Width="386">
            <TabItem Header="Food Section">
                <Grid Background="#FFE5E5E5" HorizontalAlignment="Left" Width="375">
                    <TextBox x:Name="SearchBox" HorizontalAlignment="Left" Height="23" Margin="15,13,0,0"
                             TextWrapping="Wrap" Text="Search" VerticalAlignment="Top" Width="140" />
                    <Button x:Name="SerchButton" Content="Search" HorizontalAlignment="Left" Margin="175,13,0,0"
                            VerticalAlignment="Top" Width="80" />
                    <Button x:Name="AddButton" Content="+" HorizontalAlignment="Left" Margin="295,13,0,0"
                            VerticalAlignment="Top" Width="20" />
                    <Button x:Name="RemoveButton" Content="-" HorizontalAlignment="Left" Margin="335,13,0,0"
                            VerticalAlignment="Top" Width="20" RenderTransformOrigin="0.4,0.682" />
                    <DataGrid x:Name="BusinessesGrid" HorizontalAlignment="Left" Height="220" Margin="15,53,0,0"
                              VerticalAlignment="Top" Width="340" ItemsSource="{Binding Catalog}"/>
                </Grid>
            </TabItem>
</TabControl>

节类:

public class Section : SearchBinaryTree < BinaryTreeNode < Business >,Business > {

    public Section ( string name ) {
        Name = name;
    }

    public Section ( BinaryTreeNode < Business > root, string name ) : base( root ) {
        Name = name;
    }

    public string Name { get; set; }

    public ObservableCollection < Business > Catalog {
        get { return GetCatalog(); }
    }

    private ObservableCollection < Business > GetCatalog () {
        var businesses = new ObservableCollection < Business >();
        InOrder( businesses.Add );

        return businesses;
    }
}

目录类有四个部分:

public class Catalog {

        public Section FoodSection { get; }
        public Section SchoolSection { get; }
        public Section BeautySection { get; }
        public Section FunSection { get; }

        public static Catalog Instance { get; }

        static Catalog () {
            Instance = new Catalog();
        }

        private Catalog ( ) {
            FoodSection = new Section("Food");
            SchoolSection = new Section("School");
            BeautySection = new Section("Beauty");
            FunSection = new Section("Fun");
        }

    }

所以数据网格有一个 ItemsSource 属性但它不起作用,我是 WPF 的新手,有没有人有任何想法???

【问题讨论】:

  • 您是否检查过 Visual Studios 输出窗口的绑定错误?这可以提供线索。

标签: c# wpf xaml datagrid


【解决方案1】:

删除这行代码因为不需要设置DataGrid的DataContext

BusinessesGrid.DataContext = MainCatalog.FoodSection;

由于您已经将页面的 DataContext 设置为 MainCatelog,您只需将 BusinessGridItemsSource 设置为 FoodSection

<DataGrid x:Name="BusinessesGrid" HorizontalAlignment="Left" Height="220" Margin="15,53,0,0"
   VerticalAlignment="Top" Width="340" ItemsSource="{Binding FoodSection}"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2014-04-23
    • 1970-01-01
    相关资源
    最近更新 更多