随笔 - 55  文章 - 15  trackbacks - 0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

常用链接

留言簿

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

     Windows 8 中的控件具有诸多属性(property),就是一些公共的数据成员,这些属性具有get和set方法,可以获取也可以设置这些属性,在Xaml中设置属性值方便的很,就像下面这样(以Button空间的Content属性为例):
<Button Name="TestButton" Content="Tap" Height="100" Width="200" Click="TestButton_Click" />
设置了一个Click事件,该事件由TestButton_Click方法处理,但是Button中的Content属性是Object^类型的,WinRT中所有的类都是从Objcet^类继承的。
我想实现这样一个简单的功能:如果按钮的内容是“Tap”我就把它改成“Hello”,如果不是,那我还把它改成“Tap 1231 12313”,现在问题来了,我怎么判断Content上面的字符串是不是“Tap”呢?
因为Content属性是Object^类型,那好,我就先建立一个String^类型的对象,再转换成Object^就行了
String^ str = ref new String^(L"Hello");
(Object^)str;
转换完成,那进行判断void EventTest::MainPage::TestButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
void EventTest::MainPage::TestButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
    
    if((TestButton->Content) ==(Object^)(ref new String(L"Tap")))
    {
        String^ str = ref new String(L"hello");
        TestButton->Content = str;
    }
    else 
    {
        String^ str = ref new String(L"Tap 1231 12313 ");
        TestButton->Content =TestButton->Content->ToString();//这个东西显示的是:Windows.Foundation.IReferenc~1<String> 
        
    }
    
}
结果却不如我们所想,点击按钮,一直显示“Tap 1231 12313”,原因就是,其实这两个东西并不是在判断字符串是否相等,而是在判断这两个Object^对象是否相等。

那么,我看到Content中有一个ToSting()方法,返回值是一个String^,那我能不能通过这个来判断呢?结果是不行的,因为他们根本不是一个东西,ToString转换出来的东西是:Windows.Foundation.IReferenc~1<String>,应该是这个属性的相关信息。

如果把Content转换成String^类型的话就是字符串的比较了,这下结果就对了。
通过这个小小的问题可以看到:
1. String^类型的定义必须是ref new Sting(L"Ta"),其中L很重要
2. 判断内容是否相等必须转换成同一类型,而且是String^类型。
3. 可能有其他方法判断,里面有个Equal方法,但是也不能成功。如果有其他朋友用其他方法实现了该功能,请回复我,谢谢!

void EventTest::MainPage::TestButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
    
    if((String^)(TestButton->Content) ==ref new String(L"Tap"))
    {
        String^ str = ref new String(L"hello");
        TestButton->Content = str;
    }
    else 
    {
        String^ str = ref new String(L"Tap 1231 12313 ");
        TestButton->Content =str;
        
    }
    
}
posted on 2012-02-15 15:31 Dino-Tech 阅读(411) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理