假设我有一个.resx文件,其资源键为GroupBoxHeaderCaption
,值为“SomeString”。
然后在我的 ViewModel 中,我有一个名为string
的{{1}}属性。
我想要实现的是(假设.resx文件引用Description
并且视图模型称为using resx = [...]
):
viewModel
是否可以在XAML中执行此操作?我得到了这个,但它不起作用:
string.Format("{0}: {1}", resx.GroupBoxHeaderCaption, viewModel.Description)
无法正常工作我的意思是 <GroupBox Margin="4">
<GroupBox.HeaderTemplate>
<DataTemplate>
<Label>
<Label.Content>
<MultiBinding StringFormat="{}{0}: {1}">
<Binding Path="{x:Static my:MyResources.GroupBoxHeaderCaption}" />
<Binding Path="viewModel.Description" />
</MultiBinding>
</Label.Content>
</Label>
</DataTemplate>
</GroupBox.HeaderTemplate>
红色加下划线,出现错误:
成员类型无效:预期类型为'PropertyPath',实际类型为'string'。
我知道我可以为我的GroupBoxHeaderCaption
编写一个转换器,但有没有办法完成所有XAML?
当我这样做时,我得到了理想的结果:
viewModel.Description
我想从.resx文件中获取“SomeString:”部分。
答案 0 :(得分:2)
我刚刚弄清楚你为什么会收到这个错误。这是因为您无法在string
的{{1}}属性中引用资源Path
。
我想也许你必须尝试这样的事情:
MultiBinding
不幸的是,我现在无法尝试,我不确定这是否是正确的语法,所以如果您还有其他问题,请回来告诉我。