4

我是 Windows Phone 开发的新手。我想问是否有可能做到这一点。我需要使用后面的代码访问 XAML 中的变量,然后将其作为项目添加到在我的视图模型中找到的现有列表中。因此,我需要访问我的视图模型以获取列表和 XAML 以从资源中获取变量。

这是可行的吗?如果是,我该如何访问它。这就是我当前的 XAML 中的内容。

<phone:PhoneApplicationPage.Resources>
  <system:String x:Key="scanName">SCAN</system:String>
</phone:PhoneApplicationPage.Resources>

非常感谢,

4

2 回答 2

1

您正在尝试做的是对 MVVM 的所有内容的严重违反,但有可能......

使用视图代码隐藏中的以下行,您可以...

...访问资源字符串:

var scanName = this.Resources["scanName"];

...访问 ViewModel:

var vm = DataContext as MyViewModel;
if (vm == null) return;
vm.ScanHistory.Add(scanName);

话虽如此,你真的不应该这样做。MVVM 的理念是将 ViewModel 和 View 完全解耦,让 WPF 绑定机制为您将它们连接在一起。在您的情况下,据我所知,您应该将扫描名称存储在其他地方,作为资源或配置值,在 ViewModel 中获取它并在 ViewModel 上提供 View 可以绑定的属性。

于 2013-04-15T06:53:28.030 回答
1

I haven't near winphone app so i make simple example on wpf(it's similiar with winphone).

//write string value from dynamic resource into textblock

 <TextBlock FontSize="14" Text="{DynamicResource scanName}"/>

//changing resource in codebehind (this is Window in my example)

 this.Resources["scanName"] = "new value";

As my mind you scenario is veru specific.Try to read about bindings. May be bindings will be more useful in your scenario.

于 2013-04-15T03:34:36.987 回答