繁体   English   中英

将不同的xaml页面与mainWindow.xaml集成

[英]Integrate different xaml pages with mainWindow.xaml

我不确定我是否朝着正确的方向前进。 我想在应用程序的不同页面上重用页面的某些部分,所以我在用户控件wpf xaml上开发了这些页面。请您提供帮助或建议一些示例,说明如何将不同的xaml页面集成到mainWindow.xaml以便运行我的应用程序。

所以我在用户控件wpf xaml上开发了这些页面

这是一种设计理念,将所有这些用户控件放在页面上的公共框架/位置中,然后在VM中创建一个枚举,该枚举将定义与每个控件直接相关的页面的不同状态。

将所有控件可见性绑定到VM上的属性(该属性标识当前状态)(根据上述状态枚举),然后使用转换器隐藏或显示控件。


这是一个示例,将枚举放在VM类上。

  public enum Operations
  {
     Authentication    = -1,
     DisplayResults    = 0,
     EditData,
     ...
  }

创建一个属性,该属性将定义VM上的当前状态

public Operations CurrentState
{
    get { return _CurrentState; }
    set { _CurrentState = value; PropertyChanged(); }
}

然后在控件上绑定到该状态,还要传入文本以标识控件

<controls:Authentication 
             Visibility="{Binding CurrentState, 
                                  ConverterParameter=Authentication, 
                                  Converter={StaticResource StateToVisiblity}}"/>

然后在我们的转换器参考中,枚举并根据当前状态确定是否应显示控件:

public class OperationStateToVisiblity : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (value != null)     && 
               (parameter != null) &&
                value.ToString().Equals(parameter.ToString())
            ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

这样,仅在状态更改且该控件已定义为特定枚举时才显示每个控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM