小编JTI*_*TIM的帖子

导航和重新调整页面/ viewmodel构造函数

我正在使用Galasoft Mvvm Light工具包,在Windows手机的MVVM模式中构建我的应用程序.我必须每个页面都有自己的viewmodel.

当用户启动应用程序时,他可以选择新游戏og旋转问题页面.这些页面每个都有一个viewmodel,一切都使用viewmodellocator.然后,当用户再次导航以在新游戏和问题之间进行选择时.视图模型/页面未被删除.这意味着当用户第二次进入问题或新游戏时,不会调用viewmodel的构造函数,这样就不会运行构造函数中的初始化,并且未正确设置视图.

解决方案我试过了

我尝试删除导航中的后台堆栈,例如新游戏或问题的新导航,应该启动新页面,从而调用构造函数.不工作.

在视图中使用加载的事件,并调用构造函数.不工作.

试图按照 如何重置IOC容器中的所有实例 但无法使其工作,可能只是我.

有没有人解决这个问题,如果是这样,应该如何解决?

代码 在这里你可以找到一个例子.按问题,然后按一下那里的按钮,使用返回键.并再次按下问题.你看到这个数字现在是1,这很容易改变.但是再次按下按钮时会出现错误.突然出现两个弹出窗口.

那么设置viewmodel的正确方法是什么.因为新游戏的视图将在重新加载旧游戏时使用,仅使用其他值,并且当想要开始新游戏时.希望你能理解 :)

此示例仅用于显示每次返回viewmodel页面时弹出窗口计数上升的问题. https://www.dropbox.com/s/gjbz0l8rmsxqzrd/PhoneApp8.rar

ViewModel Locator 我在我当前的项目中使用了以下代码中的三个viewmodel:

using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Ioc;
using Microsoft.Practices.ServiceLocation;

namespace MVVMTestApp.ViewModel
{
public class ViewModelLocator
{
    public ViewModelLocator()
    {
        //Holder styr på ViewModels
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        //Tilføj linje her for hver ViewModel
        SimpleIoc.Default.Register<MainViewModel>();
        SimpleIoc.Default.Register<MainViewModelTest>();
        SimpleIoc.Default.Register<MenuViewModel>();
    }

    //Tilføj metode som denne for hver ViewModel
    public MainViewModel Map
    {
        get
        {
            return ServiceLocator.Current.GetInstance<MainViewModel>();
        }
    }

    public MainViewModelTest Main
    {
        get
        {
            return ServiceLocator.Current.GetInstance<MainViewModelTest>();
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# ioc-container mvvm windows-phone-8

5
推荐指数
1
解决办法
1416
查看次数

如何将字符串转换为颜色?对于 Windows 手机 C#

我有一个用户控件,我将一个字符串绑定到 xaml 路径。这使我可以选择“黑色”“蓝色”等颜色,并使用十六进制数字作为字符串来选择颜色。

但我无法在 C# 代码中使用相同的字符串。如下例所示:

SolidColorBrush blackBrush = new SolidColorBrush();
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = shieldGearModelRec.Gear.Color;
Run Code Online (Sandbox Code Playgroud)

所以最后一个字符串shieldGearModelRec.Gear.Color是我在 XAML 中用作绑定的字符串。它可以将字符串转换为颜色名称或六进制描述中的颜色。但是我怎么能在后面的代码中做到这一点,也就是在 c# 中?

我的搜索在 C# 中找到了诸如将字符串转换为颜色之类的东西 但这在 Windows 手机中是不可能的。有没有办法做到这一点?

一个主意

我是否需要创建一个转换器来读取字符串,查找 # 以确定它是六边形还是颜色名称,然后使用六边形转换器来查找 rgb,以及名称的开关?这似乎不是最聪明的解决方案

c# string xaml colors windows-phone-8

5
推荐指数
1
解决办法
1169
查看次数

当 DataTemplate 为 Button 时,ListBox 项返回字符串

我正在创建一个 WP 8.1 Silverlight 应用程序。

我有一个ObservableCollectionof 字符串名称,它设置为ItemsSourceof a ListBox。哪些是ListBox. 然后我想从 中提取按钮ListBox,但返回值的类型为string

xaml代码是:

<ListBox x:Name="Game_ScrollViewer_online" Margin="41,104,128,6" SelectedValuePath="Current_game_button">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button x:Name="Current_game_button" Content="{Binding}" 
                    HorizontalAlignment="Center" Height="80" Margin="-14,6,-15,0"
                    VerticalAlignment="Top" Width="210" Template="{StaticResource Button_CurrentLayout1}" 
                    RenderTransformOrigin="0.5,0.5" Foreground="#FFCBECCB" FontFamily="Times New Roman"
                    Click="LoadGame_online" FontSize="16">
            </Button>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

然后我想提取按钮元素:

for (int i = 0; i < Game_ScrollViewer_online.Items.Count; i++)
{
     var tempType = Game_ScrollViewer_online.Items[i].GetType();
     Button tempBut = (Game_ScrollViewer_online.Items[i] as Button); 
     //Do stuff with button
}
Run Code Online (Sandbox Code Playgroud)

但正如所说,返回类型是字符串。

为什么不是按钮?有没有办法访问该按钮?

c# wpf xaml listbox windows-phone-8.1

5
推荐指数
1
解决办法
1191
查看次数

IAP Windows Phone 8.1错误:HRESULT:0x805A0194

我在IAP上有错误,我尝试加载产品列表.

            var listing = await CurrentApp.LoadListingInformationByProductIdsAsync(
                                new string[] { "Guld_pose_1" });
Run Code Online (Sandbox Code Playgroud)

HRESULT: 0x805A0194根据此链接此链接,我得到的错误是我读过的应该是comitted版本PhoneProductId和Publisher ID之间的错位.

如何在新的开发商店中找到这些数字,我只能找到旧的指南?我在开发中心找到了两个发布商ID但没有phoneproductID,或者这是SID?

对于一些帮助有点困惑的希望.

c# silverlight in-app-purchase windows-phone-8.1

2
推荐指数
1
解决办法
336
查看次数

ROS 节点无法通过启动文件执行工作

在hello nodeoutput roslaunch之前的这两个问题中已经解决了类似的问题。但我无法让我的节点通过启动文件工作。如果我像这样运行节点:

./image_listener_test_node 
Run Code Online (Sandbox Code Playgroud)

它可以正确打印所有内容,并且能够订阅正确的主题。但是通过启动文件:

<launch>
    <node name="image_listener_test" type="image_listener_test_node" pkg="image_listener_test"  output="screen"/>

</launch> 
Run Code Online (Sandbox Code Playgroud)

不打印任何内容,也不写入任何错误消息,例如节点未正确注册。但我看不到任何输出,并且它没有注册到该主题。我还缺少其他东西吗?

额外的

最初创建的包名为image_listener_test,src 中使用的 cpp 文件为image_converter.cpp. 启动文件位于包的 src 内,即catkin_ws/src/image_listener_test/src/.

./image_listener_test_node当我像完成一样运行包时catkin_ws/src/devel/lib/image_listener_test/

路径有问题吗?

CMakeList

cmake_minimum_required(VERSION 2.8.3)    
project(image_listener_test)

find_package(catkin REQUIRED COMPONENTS
  compressed_image_transport
  cv_bridge
  image_transport
  roscpp
  rospy
  sensor_msgs
  std_msgs
)

catkin_package(
)
find_package(OpenCV REQUIRED)
find_package(catkin REQUIRED)

message("this is my message " ${OpenCV_LIBRARIES} )
message("this is my message " ${OpenCV_INCLUDE_DIRS} )
message("this is my message " ${OpenCV_INSTALL_PATH} )
include_directories(
    ${OpenCV_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS} …
Run Code Online (Sandbox Code Playgroud)

c++ launch ros

2
推荐指数
1
解决办法
1万
查看次数