C# WPF如何在用户控件和mainview之间绑定数据?

C# WPF如何在用户控件和mainview之间绑定数据?,c#,wpf,list,data-binding,user-controls,C#,Wpf,List,Data Binding,User Controls,我正在尝试将列表从mainview传输到用户控件。我的解决方案不起作用。除了转移列表外,一切正常。 我的用户控件: public List<Song> ListIWantTransferFromMainviewToUsercontrol = new List<Song>(); public View_Playlist() { InitializeComponent(); ToPlayLis

我正在尝试将列表从mainview传输到用户控件。我的解决方案不起作用。除了转移列表外,一切正常。 我的用户控件:

public List<Song> ListIWantTransferFromMainviewToUsercontrol = new List<Song>();
    public View_Playlist()
    {
        InitializeComponent();                  
        ToPlayList.ItemsSource = ListIWantTransferFromMainviewToUsercontrol;
        ToPlayList.Items.Refresh();
    }
我应该单击mainview显示的列表框中的项,并在单击时运行此代码。有没有人能解决我的问题?谢谢你的回复。 用户控件XAML,列表框部分:

<ListBox Name="ToPlayList" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="4" Background="{x:Null}" >
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="BorderBrush" Value="BlanchedAlmond" />
                <Setter Property="BorderThickness" Value="0" />
                <Style.Triggers>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter Property="Background" Value="Gray" />
                        <Setter Property="BorderThickness" Value="2" />
                    </Trigger>
                    <Trigger Property="IsMouseCaptured" Value="True">
                        <Setter Property="BorderThickness" Value="2" />
                        <Setter Property="Background" Value="Gray" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ListBox.ItemContainerStyle>
        <ListBox.ItemTemplate>

            <DataTemplate>
                <Grid Margin="0,2" >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="30"/>
                        <ColumnDefinition Width="205"/>
                        <ColumnDefinition Width="90" />
                        <ColumnDefinition Width="90" />
                        <ColumnDefinition Width="35" />
                    </Grid.ColumnDefinitions>

                    <CheckBox/>
                    <TextBlock Grid.Column="1" Text="{Binding SongTitle}"  Foreground="White"/>
                    <TextBlock Grid.Column="2" Text="{Binding SongArtist}" Foreground="White"/>
                    <TextBlock Grid.Column="3" Text="{Binding SongDate}" Foreground="White"/>
                    <TextBlock Grid.Column="4" Text="{Binding Duration}" Foreground="White"/>
                </Grid>
            </DataTemplate>

        </ListBox.ItemTemplate>
    </ListBox>


我通过参数解决了它。这并不理想,但很有效。

你说“不起作用”是什么意思?PlayList是另一个类别。您发布了类的构造函数。ToPlay的数据在哪里加载?@jdweng我忘记了重命名变量。现在正确了。@bit ToPlayList-列表框不显示数据。当我在usercontrol中手动将ListIWantTransferFromMainviewToUsercontrol设置为种子时,它会显示出来,因此数据绑定一定有问题。应该是:this.contentControl.Content=view\u Playlist.ListIWantTransferFromMainviewToUsercontrol;
<ListBox Name="ToPlayList" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="4" Background="{x:Null}" >
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="BorderBrush" Value="BlanchedAlmond" />
                <Setter Property="BorderThickness" Value="0" />
                <Style.Triggers>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter Property="Background" Value="Gray" />
                        <Setter Property="BorderThickness" Value="2" />
                    </Trigger>
                    <Trigger Property="IsMouseCaptured" Value="True">
                        <Setter Property="BorderThickness" Value="2" />
                        <Setter Property="Background" Value="Gray" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ListBox.ItemContainerStyle>
        <ListBox.ItemTemplate>

            <DataTemplate>
                <Grid Margin="0,2" >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="30"/>
                        <ColumnDefinition Width="205"/>
                        <ColumnDefinition Width="90" />
                        <ColumnDefinition Width="90" />
                        <ColumnDefinition Width="35" />
                    </Grid.ColumnDefinitions>

                    <CheckBox/>
                    <TextBlock Grid.Column="1" Text="{Binding SongTitle}"  Foreground="White"/>
                    <TextBlock Grid.Column="2" Text="{Binding SongArtist}" Foreground="White"/>
                    <TextBlock Grid.Column="3" Text="{Binding SongDate}" Foreground="White"/>
                    <TextBlock Grid.Column="4" Text="{Binding Duration}" Foreground="White"/>
                </Grid>
            </DataTemplate>

        </ListBox.ItemTemplate>
    </ListBox>