У меня есть конфигурация для моего приложения в статическом классе:
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 для программы.