我正在尝试在列表框中填充文本块,如下所示。
首先,我尝试使用这个xaml工作正常。
<ListBox Name="lbTodoList" HorizontalContentAlignment="Stretch"
ItemsSource="{Binding ThisList1}"
DisplayMemberPath="{Binding ListItem.Name}"
>
</ListBox>
但是在下面尝试时,文本块中没有显示任何内容
<StackPanel Grid.Row="1">
<TextBox Text="{Binding ElementName=lbTodoList, Path=SelectedValue}"/>
<Button Command="{Binding ChangeCurrentView}">Click Me</Button>
<Button Command="{Binding ChangeCurrentView}">Click Me</Button>
<ListBox Name="lbTodoList" HorizontalContentAlignment="Stretch"
ItemsSource="{Binding ThisList1}"
Width="200"
>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Width="auto" Foreground="Black" Text="{Binding Path=ListItem.Name}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
无法弄清楚我在这里做错了什么。任何帮助表示赞赏。
答案 0 :(得分:1)
您正在尝试显示一个名为ThisList1
的对象ListItem
的集合,您应该正确定义您的模型,在这里您应该做什么:
定义Item类:
public class ListItem
{
public String Name { get; set; }
//add your properties
}
在您的codebehind或Viewmodel中定义将与ListBox
private ObservableCollection<ListItem> _thisList1=new ObservableCollection<ListItem>()
{
new ListItem()
{
Name = "Name1",
}, new ListItem()
{
Name = "Name2",
}
} ;
public ObservableCollection<ListItem> ThisList1
{
get
{
return _thisList1;
}
set
{
_thisList1 = value;
}
}
最后在这里如何定义ListBox
的{{1}}
DataTemplate
不要忘记使用codebehind设置<StackPanel Grid.Row="1">
<TextBox Text="{Binding ElementName=lbTodoList, Path=SelectedItem.Name}"/>
<Button Command="{Binding ChangeCurrentView}">Click Me</Button>
<Button Command="{Binding ChangeCurrentView}">Click Me</Button>
<ListBox Name="lbTodoList" HorizontalContentAlignment="Stretch"
ItemsSource="{Binding ThisList1}"
Width="200"
>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Width="auto" Foreground="Black" Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
:
DataContext
或通过Xaml
this.DataContext=this;
并考虑实施DataContext="{Binding RelativeSource={RelativeSource Self}}"
界面以自动从视图模型更新UI。