我在用户控件的数据上下文中有Player。我想将ListView
从主窗口绑定到播放器的属性:Tracks
。
主窗口:
<Window
xmlns:local="clr-namespace:PlayerApp"
xmlns:player="clr-namespace:Player"
... >
<local:PlayerControl x:Name="PlayerControl" />
<ListBox x:Name="TrackList"
ItemsSource="{Binding DataContext.(player:Player.Tracks) , <!--error here-->
Source={x:Reference PlayerControl} ,
Mode=OneWay}"
SelectedIndex="{Binding DataContext.(player:Player.SelectedTrack) , <!--no error-->
Source={x:Reference PlayerControl}}"
SelectionMode="Single"/>
用户控件
<UserControl x:Class="PlayerApp.PlayerControl" ... >
<UserControl.DataContext>
<player:Player x:Name="MyPlayer"/> <!--player is created here-->
</UserControl.DataContext>
这些是Player
类中的属性。
public ObservableCollection<Track> Tracks { get; } = new ObservableCollection<Track>();
public int SelectedTrack { get; set; }
绑定仅在运行时时才能正常工作。即我在设计师的第一部分<得到
标记无效:查看错误列表以获取更多信息
因此我无法在设计师中看到MainWindow。我在XAML中收到此错误。
会员&#34; Tracks&#34;无法识别或无法访问
该程序编译良好。运行正常,甚至绑定工作正常,但这个错误被卡住了。
我尝试重新启动.net
。清洁解决方案关闭所有窗口并再次打开它。但错误就在那里。是这个错误还是我做错了什么?可能是什么原因?
有没有其他方法可以像这样绑定而不会出错?