C# 在用户控件中访问主页UI
我有mainPage.xaml和userControl.xaml。我在mainPage中调用了userControl。mainPage有一个名为“grd”的网格,userControl有一个名为“btn”的按钮。现在,当我单击按钮时,将引发userControl的click事件。在本例中,我想隐藏网格(mainPage.xaml中的网格)。如何访问userControls中的主页控件?您可以使用以下代码访问当前显示的页面:C# 在用户控件中访问主页UI,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我有mainPage.xaml和userControl.xaml。我在mainPage中调用了userControl。mainPage有一个名为“grd”的网格,userControl有一个名为“btn”的按钮。现在,当我单击按钮时,将引发userControl的click事件。在本例中,我想隐藏网格(mainPage.xaml中的网格)。如何访问userControls中的主页控件?您可以使用以下代码访问当前显示的页面: var mainPage = (PhoneApplicationPage
var mainPage = (PhoneApplicationPage)((App)Application.Current).RootFrame.Content;
您可以使用以下代码访问当前显示的页面:
var mainPage = (PhoneApplicationPage)((App)Application.Current).RootFrame.Content;
您可以使用以下代码访问当前显示的页面:
var mainPage = (PhoneApplicationPage)((App)Application.Current).RootFrame.Content;
您可以使用以下代码访问当前显示的页面:
var mainPage = (PhoneApplicationPage)((App)Application.Current).RootFrame.Content;
查看我的答案,在OP想要设置appbar的可见性的情况下,我的答案也适用于
Grid
查看我的答案,在OP想要设置appbar的可见性时,我的答案也适用于
网格
查看我的答案,在OP想要设置appbar的可见性时,我的答案也适用于网格
查看我的答案,在OP想要设置appbar的可见性时,我的答案也适用于网格
如果您使用的是MVVM(正如您在对@har07答案的评论中所述),则不应使用用户控制页中的事件处理程序在主页中隐藏网格。相反,您应该将命令绑定到控件页中的按钮。此命令应更改主页的视图模型,该视图模型应将此更改通知主页
在下一个示例中,我使用了mvvmlight
,但其他MVVM库的工作原理可能几乎相同
向主页的视图模型添加属性:
public class MainViewModel : BaseViewModel
{
…your code here
private bool _isValid;
public bool IsValid
{
get
{
return _isValid;
}
set
{
_isValid = value;
RaisePropertyChange("IsValid");
}
}
}
在主页中,将可见性
绑定到IsValid
<Grid Visibility="{Binding IsValid, Converter={StaticResource converter}}">
…content here
</Grid>
在用户控制页面中,将按钮
绑定到命令
:
<Button Command="{Binding InvalidateGridCommand}">
Invalidate
</Button>
使无效
现在,单击按钮将MainViewModel
上的IsValid
设置为false,这将反过来隐藏网格
,如果您使用的是MVVM(正如您在对@har07的回答的评论中所述),则不应使用用户控件页中的事件处理程序在主页中隐藏网格。相反,您应该将命令绑定到控件页中的按钮。此命令应更改主页的视图模型,该视图模型应将此更改通知主页
<Grid Visibility="{Binding IsValid, Converter={StaticResource converter}}">
…content here
</Grid>
在下一个示例中,我使用了mvvmlight
,但其他MVVM库的工作原理可能几乎相同
向主页的视图模型添加属性:
public class MainViewModel : BaseViewModel
{
…your code here
private bool _isValid;
public bool IsValid
{
get
{
return _isValid;
}
set
{
_isValid = value;
RaisePropertyChange("IsValid");
}
}
}
在主页中,将可见性
绑定到IsValid
<Grid Visibility="{Binding IsValid, Converter={StaticResource converter}}">
…content here
</Grid>
在用户控制页面中,将按钮
绑定到命令
:
<Button Command="{Binding InvalidateGridCommand}">
Invalidate
</Button>
使无效
现在,单击按钮将MainViewModel
上的IsValid
设置为false,这将反过来隐藏网格
,如果您使用的是MVVM(正如您在对@har07的回答的评论中所述),则不应使用用户控件页中的事件处理程序在主页中隐藏网格。相反,您应该将命令绑定到控件页中的按钮。此命令应更改主页的视图模型,该视图模型应将此更改通知主页
<Grid Visibility="{Binding IsValid, Converter={StaticResource converter}}">
…content here
</Grid>
在下一个示例中,我使用了mvvmlight
,但其他MVVM库的工作原理可能几乎相同
向主页的视图模型添加属性:
public class MainViewModel : BaseViewModel
{
…your code here
private bool _isValid;
public bool IsValid
{
get
{
return _isValid;
}
set
{
_isValid = value;
RaisePropertyChange("IsValid");
}
}
}
在主页中,将可见性
绑定到IsValid
<Grid Visibility="{Binding IsValid, Converter={StaticResource converter}}">
…content here
</Grid>
在用户控制页面中,将按钮
绑定到命令
:
<Button Command="{Binding InvalidateGridCommand}">
Invalidate
</Button>
使无效
现在,单击按钮将MainViewModel
上的IsValid
设置为false,这将反过来隐藏网格
,如果您使用的是MVVM(正如您在对@har07的回答的评论中所述),则不应使用用户控件页中的事件处理程序在主页中隐藏网格。相反,您应该将命令绑定到控件页中的按钮。此命令应更改主页的视图模型,该视图模型应将此更改通知主页
<Grid Visibility="{Binding IsValid, Converter={StaticResource converter}}">
…content here
</Grid>
在下一个示例中,我使用了mvvmlight
,但其他MVVM库的工作原理可能几乎相同
向主页的视图模型添加属性:
public class MainViewModel : BaseViewModel
{
…your code here
private bool _isValid;
public bool IsValid
{
get
{
return _isValid;
}
set
{
_isValid = value;
RaisePropertyChange("IsValid");
}
}
}
在主页中,将可见性
绑定到IsValid
<Grid Visibility="{Binding IsValid, Converter={StaticResource converter}}">
…content here
</Grid>
在用户控制页面中,将按钮
绑定到命令
:
<Button Command="{Binding InvalidateGridCommand}">
Invalidate
</Button>
使无效
现在,单击按钮将MainViewModel
上的IsValid
设置为false,这将反过来隐藏适用于windows Phone 8的网格
<Grid Visibility="{Binding IsValid, Converter={StaticResource converter}}">
…content here
</Grid>
(((Application.Current as App).RootVisual as PhoneApplicationFrame).Content as Page)
对于windows Phone 8,请尝试以下操作:
(((Application.Current as App).RootVisual as PhoneApplicationFrame).Content as Page)
对于windows Phone 8,请尝试以下操作:
(((Application.Current as App).RootVisual as PhoneApplicationFrame).Content as Page)
对于windows Phone 8,请尝试以下操作:
(((Application.Current as App).RootVisual as PhoneApplicationFrame).Content as Page)
我来这里是想找到这个问题的答案,经过一些尝试后,我可以使用以下工具访问我的Windows Phone 8.1应用程序的主页:
var mainPage = (MainPage)(Window.Current.Content as Frame).Content
.
要访问主页中声明的控件,您还需要给它们一个x:Name
,并将它们的x:FieldModifier
更改为“内部”
或“公共”
我来这里是为了找到这个问题的答案,经过一些尝试后,我可以使用以下工具访问我的Windows Phone 8.1应用程序的主页:
var mainPage = (MainPage)(Window.Current.Content as Frame).Content
.
要访问主页中声明的控件,您还需要给它们一个x:Name
,并将它们的x:FieldModifier
更改为“内部”
或“公共”
我来这里是为了找到这个问题的答案,经过一些尝试后,我可以使用以下工具访问我的Windows Phone 8.1应用程序的主页:
var mainPage = (MainPage)(Window.Current.Content as Frame).Content
.
要访问主页中声明的控件,您还需要给它们一个x:Name
,并将它们的x:FieldModifier
更改为“内部”
或“公共”
,我来这里是想找到关于