2

在我的App.xaml文件中,我有:

<Application.Resources>
    <LocalViewModels:SharedSettingsViewModel x:Key="SharedSettingsViewModel"/>
    <LocalViewModels:ApplicationSpecificSettingsViewModel x:Key="ApplicationSpecificSettingsViewModel" />
</Application.Resources>

如何在另一个窗口中使用这些资源?

例如,如果我在同一个窗口中有这些资源,我会这样做:

DataContext="{Binding Source={StaticResource ApplicationSpecificSettingsViewModel}}"
DataContext="{Binding Source={StaticResource ApplicationSpecificSettingsViewModel}}"
4

1 回答 1

1

虽然我同意 HighCore 如果你想这样做,但这是你需要做的。下面是一个完整的例子。

第一步 - 创建视图模型(您似乎已经完成了)

namespace resourcesTest
{
    public class SharedViewModel
    {
        public string TestMessage
        {
            get { return "This is a test"; }
        }
    }
}

第二步 - 将其作为资源添加到 app.xaml

<Application x:Class="resourcesTest.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:resourcesTest"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         <local:SharedViewModel x:Key="SharedViewModel"></local:SharedViewModel>
    </Application.Resources>
</Application>

第三步 - 在你的窗口中设置数据上下文 - 无论是哪一个,然后你就可以使用数据了。

<Window x:Class="resourcesTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid DataContext="{Binding Source={StaticResource SharedViewModel}}">
        <Label Content="{Binding TestMessage}"></Label>
    </Grid>
</Window>

除非我错过了您正在尝试做的事情。同样,我不会这样做——我只会将应用程序资源用于样式和 UI 特定的东西。希望这会有所帮助。

于 2013-10-21T20:38:29.767 回答