在其他页面中的XAML元素

本文关键字:XAML 元素 其他 | 更新日期: 2023-09-27 18:05:28

我有一个MainPage.xamlSecondPage.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;

,但这分配了一个新的空网格。我搜索了很多,但是没有结果

在其他页面中的XAML元素

绑定到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和如何使用它的文档