C# 具有绑定数据的Listbox中的Listbox
是否可以在另一个列表框中创建列表框?两个listbox都绑定了相同的数据,只有第二个listbox添加了一些内容。我没有得到任何错误,只有第二个列表框中的数据(在第一个列表框中)没有显示或绑定不工作,我不知道。第一个列表框的数据绑定正常。我的样本:C# 具有绑定数据的Listbox中的Listbox,c#,xaml,data-binding,windows-8,listbox,C#,Xaml,Data Binding,Windows 8,Listbox,是否可以在另一个列表框中创建列表框?两个listbox都绑定了相同的数据,只有第二个listbox添加了一些内容。我没有得到任何错误,只有第二个列表框中的数据(在第一个列表框中)没有显示或绑定不工作,我不知道。第一个列表框的数据绑定正常。我的样本: <Grid Grid.Row="2"> <ListBox x:Name="lbTransitNow" FontSize="13" ItemsSource="{Binding MyDataForTransit}"&g
<Grid Grid.Row="2">
<ListBox x:Name="lbTransitNow" FontSize="13" ItemsSource="{Binding MyDataForTransit}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate >
<StackPanel>
<Grid x:Name="gridTodayBtn">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock x:Name="tbTransitStart" Foreground="Black" Grid.Column="0"
Text="{Binding Lines_departure_time}" HorizontalAlignment="Left"/>
<TextBlock x:Name="tbTransitEnd" Foreground="Black" Text="{Binding Lines_arrival_time}"
Grid.Column="1"/>
<TextBlock x:Name="tbTransitTravelTime" Foreground="Black" Text="{Binding Lines_travelTime}"
Grid.Column="2"/>
<TextBlock x:Name="tbPrice" Foreground="Black" Text="{Binding Lines_price}"
Grid.Column="3"/>
<TextBlock x:Name="tbTransitKm" Foreground="Black" Text="{Binding Lines_km}"
Grid.Column="4"/>
<TextBlock x:Name="tbTransitNumber" Foreground="Black" Text="{Binding Lines_name}"
Grid.Column="5"/>
<Image x:Name="imgMoreInfo" Source="layoutGraphics/b5.png" Grid.Column="6" Width="40" Height="40" Tapped="imgMoreInfo_Tapped" Tag="{Binding}"></Image>
<ListBox x:Name="lbTransitNowSub" FontSize="13" ItemsSource="{Binding MyDataForTransit}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate >
<Grid x:Name="gridTodayBtn">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock x:Name="tbTransitStart" Foreground="Black" Grid.Column="0"
Text="{Binding Lines_departure_time}" HorizontalAlignment="Left"/>
<TextBlock x:Name="tbTransitEnd" Foreground="Black" Text="{Binding Lines_arrival_time}"
Grid.Column="1"/>
<TextBlock x:Name="tbTransitTravelTime" Foreground="Black" Text="{Binding Lines_travelTime}"
Grid.Column="2"/>
<TextBlock x:Name="tbPrice" Foreground="Black" Text="{Binding Lines_price}"
Grid.Column="3"/>
<TextBlock x:Name="tbTransitKm" Foreground="Black" Text="{Binding Lines_km}"
Grid.Column="4"/>
<TextBlock x:Name="tbTransitNumber" Foreground="Black" Text="{Binding Lines_name}"
Grid.Column="5"/>
<Image x:Name="imgMoreInfo" Source="layoutGraphics/b5.png" Grid.Column="6" Width="40" Height="40" Tapped="imgMoreInfo_Tapped" Tag="{Binding}"></Image>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
public ObservableCollection<BindingData> _myDataForTransit = new ObservableCollection<BindingData>();
public ObservableCollection<BindingData> MyDataForTransit
{
get { return _myDataForTransit; }
set { _myDataForTransit = value; }
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(null, new PropertyChangedEventArgs(propertyName));
}
}
_myDataForTransit.Add(new BindingData
{
myData...
});
}
OnPropertyChanged("MyDataForTransit");
公共ObservableCollection_myDataForTransit=新ObservableCollection();
公共可观测收集MyDataForTransit
{
获取{return\u myDataForTransit;}
设置{u myDataForTransit=value;}
}
公共事件属性更改事件处理程序属性更改;
公共void OnPropertyChanged(字符串propertyName)
{
if(PropertyChanged!=null)
{
PropertyChanged(空,新PropertyChangedEventArgs(propertyName));
}
}
_添加(新绑定数据)
{
我的数据。。。
});
}
OnPropertyChanged(“MyDataForTransit”);
首先,您的方法不正确,您可以使用collectionViewsource来实现分组数据
未绑定的原因是,第二个列表框位于第一个列表框的Datatemplate中,因此其DataContext被设置为父级的DataContext,即MyDataFortTransit,并且此集合不包含第二个列表框绑定到的集合MyDataFortTransit,因此第二个列表框是没有显示任何内容
要检查此项,请在BindingData类中创建一个集合,并将第二个ListBox项源绑定到此集合,您将发现它正在工作。
实际上,在wpf中有一个名为relativeSource的属性,可以很容易地设置为class/page/usercontrol,但在Windows8中我无法做到这一点。
希望它能对你有所帮助