WPF-在不同的命名空间中访问静态类

问题描述 投票:0回答:1

我在静态类中具有应用程序的配置:

namespace Program.Config
{
  static Class AppConfig
  {
    ...
  } 
}

现在,在我的xaml中,我想访问此配置。

所以,我加了

xmlns:config="clr-namespace:Program.Config"

在我看来,它位于Program.Views

但是,像访问AppConfig一样>>

config:AppConfig.ConnectionConfig.conParam.ethPort

不起作用。

从WPF中的不同名称空间访问静态类的成员的正确方法是什么?

编辑:

确定,MWE:

MainWindow.xaml.cs

using System.Threading;
using System.Windows;
using Program.ViewModels;

namespace Program
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            MainVM vm = new MainVM();
            DataContext = vm;
            InitializeComponent();
        }
    }
}

`MainVM.cs

using Prism.Mvvm;
using System;

namespace Program.ViewModels
{
    internal class MainVM : BindableBase
    {
        public MainVM()
        {

        }

    }
}

`MainWindow.xaml

<Window x:Class="Program.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:config="clr-namespace:Program.Config"
        mc:Ignorable="d"
        Title="MainWindow" Height="700" Width="1000">


    <DockPanel LastChildFill="False">
        <Label Content="Port is:" />
        <Label Content="{Binding config:AppConfig.ConnectionConfig.conParam.ethPort}" />
    </DockPanel>
</Window>

Config.cs

namespace Program
{
    using Program.Config;

    public struct ConnectionParameters
    {
        public int ethPort { get; set; }
        public string ethIp { get; set; }
    }

    public static class AppConfig
    {
        public static ConnectionConfObj ConnectionConfig { get; set; }

        static AppConfig()
        {
            ConnectionConfig = new ConnectionConfObj();
        }
    }
}

namespace Program.Config
{
    public abstract class ConfigBase
    {
        public string filepath { get; set; }
    }

    public class ConnectionConfObj : ConfigBase
    {
        public ConnectionParameters conParam { get; set; }

        public ConnectionConfObj()
        {
            ConnectionParameters _conParam = new ConnectionParameters();
            _conParam.ethPort = 8;

            conParam = _conParam;
        }
    }

}

在程序的范围内,配置的结构像这样有意义,因为我从不同的来源读取了多个配置,并希望将它们显示在该程序的一个AppConfig中。

我在静态类中为我的应用程序配置:名称空间Program.Config {静态类AppConfig {...}}现在,在我的xaml中,我想访问此配置。因此,我添加了xmlns:...

wpf static namespaces
1个回答
0
投票
<Label 
    Content="{Binding conParam.ethPort, Source={x:Static config:AppConfig.ConnectionConfig)}" 
    />
© www.soinside.com 2019 - 2024. All rights reserved.