我使用的是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
代码?
- 我的问题是**:有没有办法解决这个问题?如果没有,在重命名
3条答案
按热度按时间dxpyg8gm1#
我正在派生RegionManager以添加UiRegion类型的属性,并将x:Static的值传递给原始属性。
最好创建一个标记扩展:
第一个
oaxa6hgo2#
我没有使用Prism,但我会假设RegionName属性的类型是String。但您希望将枚举值赋给字符串。x:Static(就像StaticResource和DynamicResource一样)不执行类型转换。要进行转换,您需要使用Binding。
我认为,如果这样做的话,赋值将不会出错:
clj7thdc3#
class
es也可以工作:密码:
示例: