我在静态类中具有应用程序的配置:
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:...
<Label
Content="{Binding conParam.ethPort, Source={x:Static config:AppConfig.ConnectionConfig)}"
/>