gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:01:28 25 4
gpt4 key购买 nike

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

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()
{

}

}
}

`主窗口.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 中。

最佳答案

要访问 XAML 中的静态类成员(包括枚举值),请使用 x:Static markup extension如下:{x:Static nmspc:ClassName.MemberName} (或 {x:Static nmspc:EnumTypeName.EnumValueName} -- 枚举值实际上是静态类的静态成员)。您将获得一个命名空间前缀、一个可选地以中间命名空间开头的类名和一个成员名,这就是它所做的全部。如果您需要 MemberName 的属性,使静态引用成为绑定(bind)的来源。绑定(bind)可以有一个属性的属性的路径:

<Label 
Content="{Binding conParam.ethPort, Source={x:Static config:AppConfig.ConnectionConfig)}"
/>

关于WPF - 访问不同命名空间中的静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58524926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com