XAML WPF -直接将枚举值分配给柱形图的regionName

laximzn5  于 2022-12-07  发布在  其他
关注(0)|答案(3)|浏览(156)

我使用的是Prism,这是主窗口的一段.xaml代码

<mah:MetroWindow
    x:Class="ProjectName.Views.MainWindow"
    xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
    xmlns:prism="http://prismlibrary.com/">
        
    <ContentControl
        prism:RegionManager.RegionName="CenterRegion" />
        
</mah:MetroWindow>

我已经将所有区域的名称分组到一个枚举UiRegion中,现在,我想重命名UiRegion中的一些值,但是重命名不会影响.xaml中的字符串!因此,我必须手动更改它们。因此,我尝试将.xaml代码更改为如下所示的内容

<ContentControl
    prism:RegionManager.RegionName="{x:Static model:UiRegion.CenterRegion}" />

但它在InitializeComponent();处出现运行时错误
'CenterRegion'不是属性'RegionName'的有效值。

    • 我的问题是**:有没有办法解决这个问题?如果没有,在重命名UiRegion值时,有没有其他方法来更新.xaml代码?
dxpyg8gm

dxpyg8gm1#

我正在派生RegionManager以添加UiRegion类型的属性,并将x:Static的值传递给原始属性。
最好创建一个标记扩展:
第一个

oaxa6hgo

oaxa6hgo2#

我没有使用Prism,但我会假设RegionName属性的类型是String。但您希望将枚举值赋给字符串。x:Static(就像StaticResource和DynamicResource一样)不执行类型转换。要进行转换,您需要使用Binding。
我认为,如果这样做的话,赋值将不会出错:

<ContentControl
    prism:RegionManager.RegionName="{Binding Source={x:Static model:UiRegion.CenterRegion}}" />
clj7thdc

clj7thdc3#

class es也可以工作:
密码:

public static class RegionNames
{
    public const string MAIN_REGION = "mainregion";
    public const string DETAILS_REGION = "someotherfunnyidentifier";
}

示例:

<ContentControl prism:RegionManager.RegionName="{x:Static constants:RegionNames.MAIN_REGION}" />

相关问题