Wpf 尝试将datatable与listbox绑定…出现问题
请帮帮我…我做错了什么?正在尝试将listbox绑定到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 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"));
}
}
}