Wpf 尝试将datatable与listbox绑定…出现问题

Wpf 尝试将datatable与listbox绑定…出现问题,wpf,binding,listbox,datatable,this,Wpf,Binding,Listbox,Datatable,This,请帮帮我…我做错了什么?正在尝试将listbox绑定到datatable。调试后,我在表中看到了数据行,但有些数据行没有绑定到listbox 仅供参考_这是我当前窗口的名称 <ListBox Grid.Column="1" ItemsSource="{Binding ElementName=_this, Path=MainCategoriesTable}" HorizontalAlignment="Center" BorderBrush="Transparent"

请帮帮我…我做错了什么?正在尝试将listbox绑定到datatable。调试后,我在表中看到了数据行,但有些数据行没有绑定到listbox

仅供参考_这是我当前窗口的名称

            <ListBox Grid.Column="1" ItemsSource="{Binding ElementName=_this, Path=MainCategoriesTable}" HorizontalAlignment="Center" BorderBrush="Transparent" Background="Transparent" x:Name="lbMainCategories">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <RadioButton Grid.Column="0" Content="{Binding Path=main_category_name}" VerticalAlignment="Center" GroupName="grpMainCategory" x:Name="rdbEnableDisable" />
                            <Label Grid.Column="1" Width="30" Background="Transparent" />
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

对于XAML来说,将数据上下文设置为后面的代码对我来说是可行的

  DataContext="{Binding RelativeSource={RelativeSource Self}}"
暗藏

  this.DataContext = this;
但我用了这个,就像你成功地用了它一样

在所有XAML绑定中设置Presentation.Trace=High。这不是确切的语法,但如果您从演示开始,它应该是显而易见的

为什么标签上没有装订


主类别名称是否为公共财产?我注意到它是小写的。

DataTable
像字典一样工作,而不像对象。它不会将列作为属性公开,但每个
DataRow
都会公开一个可用于获取单元格值的属性。因此,您需要使用索引器语法:

<RadioButton Grid.Column="0" Content="{Binding Path=[main_category_name]}" VerticalAlignment="Center" GroupName="grpMainCategory" x:Name="rdbEnableDisable" />

名为“_this”的控件在哪里?您不想绑定到DataContext中的某个内容吗?我也尝试了DataContext。它也不起作用_这是我当前的窗口名,比如:老实说。几天前我试过那个密码,结果成功了。我不知道我做了什么更改,或者更改了什么,现在它不起作用了…好吧,main_category_name是DataTable中的列名。如果单选按钮起作用,那么我也会尝试使用label。但我被单选按钮卡住了。也许你使用DataContext是正确的。但我非常自信,我不需要使用DataContext。所以,为了给你的想法一个机会,我尝试了DataContext,但它也不起作用(但是当我使用DependecProperty绑定我的DataTable时,它工作了!它在DataContext=“{Binding Element=\u local}”和ItemSource=“{Binding Path=“AllMainCategoriesTable”}这两种情况下都工作了。)
<RadioButton Grid.Column="0" Content="{Binding Path=[main_category_name]}" VerticalAlignment="Center" GroupName="grpMainCategory" x:Name="rdbEnableDisable" />
public DataTable MainCategoriesTable
{
    get { return _dtMainCategory; }
    set
    {
      if(value == _dtMainCategory)
      {
        return;
      }

      _dtMainCategory = value;
      var h = this.PropertyChanged;
      if(h != null)
      {
        h(this, new PropertyChangedEventArgs("MainCategoriesTable"));
      }
    }
}