【问题标题】:Xaml - Bind listviewitem source objectXaml - 绑定 listviewitem 源对象
【发布时间】:2015-09-11 17:21:02
【问题描述】:

我在我的虚拟机中使用 observableCollecion。此集合绑定到我在 ListView 中的视图。在我的项目中,我尝试获取创建此项目的元素。将它添加到我的 commandParameter 中并执行此操作。

这是我的虚拟机:

public RelayCommand<SelectionCommandParameter> CmdRemoveFromQuiz { get; set; } 
public ObservableCollection<Question> SelectedQuiz
{
   get { return _selectedQuiz; }
   set
   {
      _selectedQuiz = value;
      RaisePropertyChanged("SelectedQuiz");
   }
}
private void RemoveFromQuiz(SelectionCommandParameter selection)
{
    if (selection.Parameter is Question)
    {
        ObservableCollection<Question> tempQuiz = SelectedQuiz; 
        Question _question = (Question)selection.Parameter;
        tempQuiz.Remove(_question);
        SelectedQuiz = tempQuiz;

    }
}

问题从RemoveBtn开始我启动命令,selection留在null我想在我的ListViewitem中获取ObservableCollection&lt;Question&gt;对象使用

现在我的观点:

        <userControls:CharmFlyout
        x:Name="cfoQuizList"
        x:Uid="QuizListCreatingPageFlyout"
        Heading="Question Multiple"
        HorizontalAlignment="Left"
        Grid.Column="0"
        Grid.RowSpan="2"
        Style="{StaticResource stlAddRecipientFlyout}">
            <tut:TutorialAwareListView x:Name="gvQuizItem"
                          ItemsSource="{Binding SelectedQuiz}"
                          IsItemClickEnabled="True"
                          CanReorderItems="True"
                          SelectionMode="None"
                          ManipulationMode="TranslateRailsX">
                <ListView.ItemTemplate>
                    <DataTemplate x:Name="DTQuizItem">
                        <Grid HorizontalAlignment="Left" Width="{StaticResource RectangleTileWidth}" Height="{StaticResource RectangleTileHeight}" 
                              Margin="0 0 0 0" Background="{StaticResource OrangeBackgroundThemeBrush}">
                            <Grid Grid.Column="1">
                                <Button x:Name="RemoveBtn" Content="X" HorizontalAlignment="Right" VerticalAlignment="Top" Width="40" Height="40" 
                                        BorderThickness="0" Command="{Binding DataContext.CmdRemoveFromQuiz, ElementName=gvQuizItem}" CommandParameter="{Binding Question}"/>
                                <maxCtrls:MaxAutoScrollingContentPresenter VerticalAlignment="Center"
                                        ScrollingDuration="{Binding Name, Converter={StaticResource TextToTimeToReadShortFormatConverter}}"
                                        ScrollingBeginTime="0:0:2">
                                    <TextBlock Text="{Binding Name}" FontWeight="SemiBold" 
                                               Foreground="{StaticResource WhiteBackground}"
                                               Margin="20,5,10,5" VerticalAlignment="Center" TextWrapping="Wrap"/>
                                </maxCtrls:MaxAutoScrollingContentPresenter>
                            </Grid>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </tut:TutorialAwareListView>
        </userControls:CharmFlyout>

TutorialAwareListView 的工作方式与 ListView 完全一样。我只是在教程运行时使用它来指向元素。

这是一个 Windows 应用商店应用程序!我不能做我们想做的所有事情。

【问题讨论】:

    标签: c# xaml listview binding windows-store-apps


    【解决方案1】:

    您应该将 SelectionMode="None" 更改为 Single 或 Multiply。 并为选定的项目创建新的 ObservableCollection。您只绑定 ItemsSource="{Binding SelectedQuiz}"。绑定 SelectedItems="{...}"

    【讨论】:

    • 是的,我只是不认为当您单击 removeBtn 时,该项目会变为选中状态。我会试试的,我告诉你。非常感谢。
    • 没有。不工作,用户必须先选择该项目。要做的事太多了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多