我是Windows手机开发的新手。我想问一下这种情况是否可行。我需要使用后面的代码访问XAML中的变量,然后我将它作为项添加到我的View Model中的现有列表中。因此,我需要访问我的View Model以获取列表,并且XAML需要从资源中获取变量。
这可行吗?如果是,我该如何访问它。这就是我目前的XAML中的内容。
<phone:PhoneApplicationPage.Resources>
<system:String x:Key="scanName">SCAN</system:String>
</phone:PhoneApplicationPage.Resources>
非常感谢,
答案 0 :(得分:1)
我没有接近winphone app所以我在wpf上做了一个简单的例子(它与winphone类似)。
//将动态资源中的字符串值写入文本块
<TextBlock FontSize="14" Text="{DynamicResource scanName}"/>
//在代码隐藏中更改资源(this
在我的示例中是Window)
this.Resources["scanName"] = "new value";
根据我的想法,你的场景是特定的。尝试阅读有关绑定的内容。可能绑定在您的场景中会更有用。
答案 1 :(得分: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中获取它,并在您的View可以绑定的ViewModel上提供属性。