ListBox SelectedItem在MVVM中不起作用

时间:2015-06-10 18:49:30

标签: c# xaml mvvm listbox selecteditem

你好我有ListBox的SelectedItem属性存在问题。它只是不起作用。

这是我的代码:

XAML:

    <TabControl HorizontalAlignment="Left" Margin="10,50,0,0" VerticalAlignment="Top" ItemsSource="{Binding WszystkieFilmy}" >
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Key}"/>
            </DataTemplate>
        </TabControl.ItemTemplate>
        <TabControl.ContentTemplate>
            <DataTemplate>
                <ListBox HorizontalAlignment="Left" Height="500" VerticalAlignment="Top" Width="750" ItemsSource="{Binding Value.Filmy}" SelectedItem="{Binding Path=WybranyFilm, Mode=TwoWay}"/>
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl>

视图模型:

    public Film WybranyFilm
    {
        get { return zaznaczonyFilm; }
        set
        {
            if (value != zaznaczonyFilm)
            {
                zaznaczonyFilm = value;
                OnPropertyChanged("WybranyFilm");
            }
        }
    }
    public Dictionary<String, ListaFilmow> WszystkieFilmy
    {
        get { return wszystkieFilmy; }
        set
        {
            if (wszystkieFilmy == value)
            {
                return;
            }
            wszystkieFilmy = value;
            OnPropertyChanged("WszystkieFilmy");
        }
    }

和&#34; Value.Filmy&#34;是:ObservableCollection 当我选择ListBox中的任何项目时,它不会被分配给&#34; WybranyFilm&#34;变量。我不知道是什么原因。我在其他视图中使用了几乎相同的解决方案,它完美地运行。唯一的区别是我只有ListBox,它不是TabControl的一部分。

2 个答案:

答案 0 :(得分:1)

对于SelectedItem,看起来DataContext不正确。

<TabControl x:Name="TabControl" HorizontalAlignment="Left" Margin="10,50,0,0" VerticalAlignment="Top" ItemsSource="{Binding WszystkieFilmy}" >
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Key}"/>
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <ListBox HorizontalAlignment="Left" Height="500" VerticalAlignment="Top" Width="750" ItemsSource="{Binding Value.Filmy}" SelectedItem="{Binding ElementName=TabControl, Path=WybranyFilm, Mode=TwoWay}"/>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

答案 1 :(得分:1)

简单地写一下:

SelectedItem="{Binding WybranyFilm}"

确保您的模型设置为视图的DataContext

相关问题