如何更改上面页面中的对象
How to make changes to objects in the page above
我有一个 NavigationView
可以将页面加载到其关联的框架中。
在加载的页面上有一个按钮,我如何使用这个按钮来改变NavigationView
的属性。
我知道要更新框架中的页面是:
Frame.Navigate(typeof(Window2));
所以我认为可能是:
Frame.NavigationView.IsEnabled = False
但这无效。
有办法吗?
您不能直接从加载的 page.You 中设置 NavigationView.IsEnabled
可以在视图模型中设置 属性 以与 navigationView.When 的 IsEnabled 绑定,您可以通过以下方式导航新页面Frame.Navigate()
,将视图模型传递给新的 page.You 可以在单击按钮时将 属性 设置为 false page.In 这种情况下,navigationView 将被禁用。
.xaml:
<NavigationView IsEnabled="{x:Bind MyViewModel.IsEnabled,Mode=OneWay}">
<NavigationView.MenuItems>
<NavigationViewItem Content="Item 1"></NavigationViewItem>
</NavigationView.MenuItems>
<Frame x:Name="ContentFrame"/>
</NavigationView>
.cs:
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private bool isEnabled = false;
public bool IsEnabled {
get { return isEnabled; }
set {
isEnabled = value;
OnPropertyChanged();
}
}
public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public sealed partial class MainPage: Page
{
public MainPage()
{
this.InitializeComponent();
MyViewModel = new ViewModel();
}
private ViewModel MyViewModel { get; set; }
}
当您想导航新页面时,传递视图模型:
ContentFrame.Navigate(typeof(Page1),MyViewModel);
Page1.cs:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
isEnabledVM = (e.Parameter as ViewModel);
}
private ViewModel isEnabledVM { get; set; }
private async void Button_Click(object sender, RoutedEventArgs e)
{
isEnabledVM.IsEnabled = false;
}
我有一个 NavigationView
可以将页面加载到其关联的框架中。
在加载的页面上有一个按钮,我如何使用这个按钮来改变NavigationView
的属性。
我知道要更新框架中的页面是:
Frame.Navigate(typeof(Window2));
所以我认为可能是:
Frame.NavigationView.IsEnabled = False
但这无效。
有办法吗?
您不能直接从加载的 page.You 中设置 NavigationView.IsEnabled
可以在视图模型中设置 属性 以与 navigationView.When 的 IsEnabled 绑定,您可以通过以下方式导航新页面Frame.Navigate()
,将视图模型传递给新的 page.You 可以在单击按钮时将 属性 设置为 false page.In 这种情况下,navigationView 将被禁用。
.xaml:
<NavigationView IsEnabled="{x:Bind MyViewModel.IsEnabled,Mode=OneWay}">
<NavigationView.MenuItems>
<NavigationViewItem Content="Item 1"></NavigationViewItem>
</NavigationView.MenuItems>
<Frame x:Name="ContentFrame"/>
</NavigationView>
.cs:
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private bool isEnabled = false;
public bool IsEnabled {
get { return isEnabled; }
set {
isEnabled = value;
OnPropertyChanged();
}
}
public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public sealed partial class MainPage: Page
{
public MainPage()
{
this.InitializeComponent();
MyViewModel = new ViewModel();
}
private ViewModel MyViewModel { get; set; }
}
当您想导航新页面时,传递视图模型:
ContentFrame.Navigate(typeof(Page1),MyViewModel);
Page1.cs:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
isEnabledVM = (e.Parameter as ViewModel);
}
private ViewModel isEnabledVM { get; set; }
private async void Button_Click(object sender, RoutedEventArgs e)
{
isEnabledVM.IsEnabled = false;
}