如何从其他窗口使用我的应用程序资源?

时间:2013-10-21 19:35:37

标签: wpf xaml mvvm

在我的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}}"

1 个答案:

答案 0 :(得分:1)

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

第一步 - 创建一个viewmodel(你已经完成了它)

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>

第三步 - 在你的窗口中设置datacontext - 无论它是哪一个,然后你就可以使用这些数据。

<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特定的事情。希望这会有所帮助。