技术开发 频道

Windows phone入门开发问答三十则

        问题十一:如何捕获网络访问发生的错误事件,取得代码?有大侠做过吗?

  答案:只能解析WebBrowser的内容。通过WebBrowser的SaveToString方法获取返回的HTML。

  问题十二:RT,不要弹出式的,一打开界面,键盘就能显示在屏幕上要怎么实现?

  答案:页面load时,加个textbox.Focus();

  问题十三:1\使用ListBox中包含button.

  2、在Button中增加Click事件;

  虽然能触发Click消息,但是程序无法获知用户点击的是那行数据。

private void Button_Click(object sender, RoutedEventArgs e) {
            
object o = listBox1.SelectedItem;
            
if (o != null) {    //这里都是Null
                Type t
= o.GetType();
                MessageBox.Show(o.ToString());
            }
        }

  listBox中增加的button代码如下:

<ListBox Height="475" HorizontalAlignment="Left" Margin="12,0,0,6" Name="listBox1" VerticalAlignment="Bottom" Width="438">
                
<ListBox.ItemTemplate>
                    
<DataTemplate>
                        
<Button Width="438" Height="120" KeyUp="Button_KeyUp" Click="Button_Click" MouseLeftButtonUp="Button_MouseLeftButtonUp">
                            
<Button.Content>
                                
<StackPanel Orientation="Horizontal" Height="85">
                                
<Image Source="{Binding ImageUrL}" Width="80" Height="80"/>
                                
<StackPanel >
                                    
<TextBlock Margin="8" Width="380" TextWrapping="Wrap" VerticalAlignment="Top" HorizontalAlignment="Left"
                                               Text
="{Binding Name}"/>
                                
</StackPanel>
                                
</StackPanel>
                            
</Button.Content>
                        
</Button>
                    
</DataTemplate>
                
</ListBox.ItemTemplate>
            
</ListBox>

  答案:如果有DataBinding的话直接取Button的DataContent就行了

  如果一定要index的话,可以这么来:

var a = sender as Button;
var b
= System.Windows.Media.VisualTreeHelper.GetParent(a);
var c
= System.Windows.Media.VisualTreeHelper.GetParent(b);
var d
= System.Windows.Media.VisualTreeHelper.GetParent(c);
ListBoxItem f
= System.Windows.Media.VisualTreeHelper.GetParent(d) as ListBoxItem;
int index =listBox1.ItemContainerGenerator.IndexFromContainer(f);

  上面VisualTreeHelper.GetParent楼主可以调试一次就知道几次能找到ListBoxItem了

  问题十四:现在WP能把GB2312格式的字符串转成utf-8的吗?

  我是这么转的:

  1. byte[] btes = System.Text.Encoding.GetEncoding("GB2312").GetBytes(urlTitle);

  
2. urlTitle = System.Text.Encoding.UTF8.GetString(System.Text.Encoding.GetEncoding("GB2312").GetBytes(urlTitle), 0, btes.Length);

  报错说“GB2312 is not a supported encoding name”.

  有没有其他方法可以转换啊?

  答案:GetEncoding只支持下面四个属性:

utf-8
UTF8Encoding

utf
-16
UnicodeEncoding (Little
-endian)

utf
-16BE
UnicodeEncoding (Big
-endian)

utf
-16LE
UnicodeEncoding (Little
-endian)

  问题十五:如何制作WP7 应moBudget用的视频演示 就像ShoppShopping Timesing Times 或者moBudget的演示视频一样

  答案:Microsoft Expression Studio中有个Encoder可以用来录制屏幕。

  问题十六:想在ListBox的item最底部放个常见的“更多”的按钮,另外一个问题,我比较困惑怎么捕获到listbox向下滚动时,已经滚到最底部的事件。

  答案:其实实现起来很简单,ScrollView中放个ItemsControl,然后检测ScrollView的滚动条位置即可

  问题十七:建立一个Convert 类用函数Convert把一个整数,转化为由几个图片组成的StackPanel并返回。这时如何把这个Convert用到XAML中呢?

  答案:在相应列放一个内容控件(TextBlock之类也行,只要有Content属性即可),然后将其Content属性绑定到你的数字列,并设置其Converter~~~

  问题十八:使用TextBlock如果Text内容很长,就会出现下文字被截断的问题。后改用TextBox,但是如果设置TextBox为只卖属性,就会有一个灰色的背景色,怎么办呢?

  答案:在Silverlight中,控件的大小为2048*2048,所以现改用scrollerview+stackpanel来显示,

  问题十九:在Start菜单上的小瓷片上,微软官方视频是有一个在小瓷片上显示短信数量,未接电话数量的数字。这个Live Title怎么能弄出来呢?

  答案:在应用程序列表长按应用程序图标,在弹出菜单中选择“Pin to Start”就可以添加你的应用程序的Tile了。

  要显示数字,在项目下打开“Properties\WMAppManifest.xml”文件,将“Tokens”节点下的“Count”改为改为一个非0的数字,瓷片上就会显示数字了。当然这个是固定数字,要动态更新数字目前只能用Push Notification.如果只是更新背景图片的话,还可以用瓷片更新计划。

  问题二十:

this.NavigationService.Navigate(new Uri("/Page1.xaml?pagetitle=hello", UriKind.Relative));          
  this.PageTitle.Text  
= NavigationContext.QueryString["pagetitle"].ToString();  

  有没有类似APPLICATION的全局的?

  答案:可以用应用程序状态,Application.State.

  PhoneApplicationService.Current.State["key"] = "value";

0
相关文章