在其他页面中的XAML元素
本文关键字:XAML 元素 其他 | 更新日期: 2023-09-27 18:05:28
我有一个MainPage.xaml
和SecondPage.xaml
, MainPage有一个xaml <Grid x:Name="mGrid" />
我想做的是设置可见性,当用户按下SecondPage上的按钮时崩溃,如:
<Button x:Name="myButton1" Click="myButton1_Click" />
private void myButton1_Click( object sender, RoutedEventArgs e)
{
mGrid.Visibility = Visibility.Collapsed;
}
或者用那个按钮发送到MainPage然后处理这个。在。cs中声明公共网格对我来说不是一个选择,因为我已经在网格中有了很多对象。我已经尝试了一些想法,如:
var pointer = new MainPage();
pointer.mGrid.Visibility = Visibility.Collapsed;
,但这分配了一个新的空网格。我搜索了很多,但是没有结果
绑定到MainPage的视图模型。Xaml可以有像
这样的属性private bool _isGridVisible;
public bool IsGridVisible
{
get { return this._isGridVisible; }
set
{
if (value != this._isGridVisible)
{
this._isGridVisible = value;
this.RaisePropertyChanged("IsGridVisible");
}
}
}
与栅格绑定为Visibility="{Binding Path=IsGridVisible, Converter={StaticResource VisibilityConverter}}"
并将这个视图模型对象传递给SecondPage。xaml作为构造函数值,并设置IsGridVisible = false
在按钮单击。
你可以有一个像下面这样的通用转换函数来将bolen转换为可见性。
public class BooleanVisibilityConverter : IValueConverter
{
private const string REVERSE = "Reverse";
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (targetType != typeof(Visibility)) throw new InvalidOperationException();
// reverse
if (parameter != null && parameter.ToString().Equals(REVERSE, StringComparison.InvariantCultureIgnoreCase))
{
return (((bool)value) ? Visibility.Collapsed : Visibility.Visible);
}
else
{
return (((bool)value) ? Visibility.Visible : Visibility.Collapsed);
}
}
}
如果我理解正确的话,您是想根据第二页中的选择在第一页上隐藏控件。
思考这个问题的方式就像你正在构建网页。
如果你有两个网页,他们不知道对方。它们只存在于客户端机器上。它们可以在导航时相互传递数据,但最终它们只是静态显示的页面。
所以你要做的是"缓存"第二页的设置,以便它们可以被第一页检索。
这可以通过多种方式实现。
如果你只传递几个变量,那么你可以在导航url
中进行。" MainPage.xaml ? hideButton = true& hideTextblock = false"等
如果你想传递大量的设置,那么我建议序列化一个设置对象到手机存储。
我在S.O.上写过很多关于这个话题的文章。
你可以在这里获得我制作的DLL和如何使用它的文档