绑定到另一个用户控件的DataContext的属性

时间:2016-12-08 10:51:07

标签: c# wpf xaml data-binding datacontext

我在用户控件的数据上下文中有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。清洁解决方案关闭所有窗口并再次打开它。但错误就在那里。是这个错误还是我做错了什么?可能是什么原因?

有没有其他方法可以像这样绑定而不会出错?

0 个答案:

没有答案