我试图将项目样式应用到我的列表框中并且没有错误并且它不起作用所以我试图找到一个工作点从我开始甚至不能打印一个'#hello world",我真的很困惑,因为我之前曾经使用过listbox而且它正在工作
编辑:
的Xaml
<ListBox Width="200" Height="200"
ItemsSource="{Binding OCsTest, RelativeSource={RelativeSource
FindAncestor, AncestorType={x:Type Window}}}"
HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
主要
public partial class MainWindow : Window
{
public ObservableCollection<string> OCsTest { get; set; }
public MainWindow()
{
InitializeComponent();
OCsTest = new ObservableCollection<string> { "This", "is", "a", "test." };
}
}
答案 0 :(得分:1)
颠倒ctor中语句的顺序:
public MainWindow()
{
OCsTest = new ObservableCollection<string> { "This", "is", "a", "test." };
InitializeComponent();
}
强烈建议您将observablecollection从代码移到适当的ViewModel中,并将其用作Window的DataContext。
修改强>
因为您正在使用RelativeSource
绑定来绑定Window本身的属性(这不是一个好习惯,IMO)。问题是,由于Window没有实现INotifyPropertyChanged,因此在调用InitializeComponent()
后设置属性不会更新UI。
答案 1 :(得分:0)
您忘记实施INotifyPropertyChanged
并在OCsTest
上提出了属性更改。你确实设置了OCsTest
,但你从未将新值提升回UI
,因此它不会显示出来。
另外,你没有做MVVM
模式。使用绑定有什么好处?为什么不直接将ItemssSource
的{{1}}属性直接设置为ListBox
。