gpt4 book ai didi

silverlight - ListBox SelectedItem 绑定(bind) : page navigation, 获取项目,在新 View 中显示其属性并重置 SelectedIndex。我能怎么做?

转载 作者:行者123 更新时间:2023-12-03 10:16:32 25 4
gpt4 key购买 nike

我正在尝试使用 MVVM Light 在我的应用程序中应用 MVVM 模式。我有一个数据绑定(bind)的列表框...

MainView.xaml [摘录]

<ListBox Name="recipesListBox" 
ItemsSource="{Binding RecipeList}"
SelectedItem="{Binding SelectedRecipe, Mode=TwoWay}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Grid.Row="1"
Margin="12,0,12,0"
SelectionChanged="recipesListBox_SelectionChanged" >

MainViewModel.cs [摘录]
    private Recipe selectedRecipe;

public Recipe SelectedRecipe
{
get
{
return selectedRecipe;
}
set
{
selectedRecipe = value;
RaisePropertyChanged("SelectedRecipe");
}
}

...在 SelectionChanged 上执行页面导航:

MainView.xaml.cs [摘录]
private void recipesListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string destination = "/RecipeView.xaml";
if (recipesListBox.SelectedIndex == -1) // If selected index is -1 (no selection) do nothing
return;
this.NavigationService.Navigate(new Uri(destination, UriKind.Relative));
//recipesListBox.SelectedIndex = -1; // Reset selected index to -1 (no selection)
}

//之后,您可以看到在页面导航后重置索引的旧代码 - 现在,使用绑定(bind)数据,显然它也将我的选定项目设置为 null!我该如何导航到新 View ,显示所选项目的属性并在我返回时重置所选索引?谢谢!

最佳答案

我这样做的方式是这样的:

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
if (listBox.SelectedItem != null)
{
listBox.SelectedIndex = -1;
}

base.OnNavigatedFrom(e);
}

然后将以下内容添加到 SelectionChanged 事件
if(SelectedItem != null)
{
// Do something with SelectedItem
}

关于silverlight - ListBox SelectedItem 绑定(bind) : page navigation, 获取项目,在新 View 中显示其属性并重置 SelectedIndex。我能怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11002049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com