首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

WP7 Silverlight 中自己实现一个类似StatusBar类遇到的有关问题

2012-02-07 
WP7 Silverlight 中自己实现一个类似StatusBar类遇到的问题需求:我实现一个批量图片拷贝的函数时,希望是在

WP7 Silverlight 中自己实现一个类似StatusBar类遇到的问题
需求:
        我实现一个批量图片拷贝的函数时,希望是在page的下方能够实现一个statusbar来显示当前拷贝的文件的名称
        为了以后能用在别的地方,我单独实现了一个   StatusBarControl的控件
        这个控件主要由一个TextBlock组成,我企图通过设置他的Text属性来更新显示的消息。
       
问题来了:
      我在拷贝文件的循环里面(从系统medialib拷贝到isolatedStorage里面)   在拷贝之前,调用statusbar.ShowMessage(message),   可是这不能导致负责现实消息的TextBlock得到刷新,   message根本显示不出来。   不管是否进行了拷贝,都显示不出来。

可能我对c#绘图的机制不了解,开始想找些强制刷新TextBlock的方法,可是没有,后来什么依赖属性都用上了还是不行,还是请高手给参谋一下
为了避免混乱我把主要代码贴再后面。

//   下面是   StatusBar   xaml主要内容

  <Grid   x:Name= "LayoutRoot ">
                <Grid.ColumnDefinitions>
                        <ColumnDefinition   Width= "* "   />
                </Grid.ColumnDefinitions>
                <Border   Name= "frameBorder "
                                BorderThickness= "1 "  
                                BorderBrush= "{StaticResource   PhoneAccentBrush} "  
                                HorizontalAlignment= "Stretch ">

                        <TextBlock   Name= "messageTextBlock "   />
                                           

                </Border>
        </Grid   >

//下面是   StatusBar   code-behinded   主要内容
  public   partial   class   StatusBarControl   :   UserControl
        {
                private   DispatcherTimer   clearTimer;

                public   Thickness   FrameBorderThickness
                {
                          ...   //省略

                  }
                public   double   MessageFontSize
                {
                        ...   //省略
                }

                public   StatusBarControl()
                {
                        clearTimer   =   new   DispatcherTimer();

                        InitializeComponent();
                    }



 
                public   void   ClearMessage()
                {
                          ...   //省略
                  }


                public   void   ShowMessage(string   message)
                {

                        if   (messageTextBlock.Text   !=   message)
                        {
                                Debug.WriteLine( "Wrintg   message   ....   {0} ",message);
                                messageTextBlock.Text   =   message;
                        }

                }


            }


//最后是   调用StatusBar   ShowMessage处的代码片断


foreach   (Picture   iterPicture   in   (srcList.SelectedItem   as   PictureAlbum).Pictures)
{
          srcPictureIndex++;

        //就是下面这行设置textblock属性是成功了,可是根本显示不出来,即便拷贝没有真的进行(空循环),也show不出来                                
        statusBar.ShowMessage(String.Format( "Copying   #{0}   <{1}> ",   srcPictureIndex,   iterPicture.Name));
        string   filepath   =   "MyPictureRoot "   +   "/ "   +   (dstList.SelectedItem   as   string)   +   "/ "   +   iterPicture.Name;

        if   (myIsolatedStorage.FileExists(filepath))
        {
                if   (samenameOptions.CurrentSelectionIndex   ==   (int)   SameNameOption.Skip)
                {
                          continue;
                }
                else   if   (samenameOptions.CurrentSelectionIndex   ==   (int)   SameNameOption.Rename)
                {
                          filepath   +=   "renamed ";
                }
                else   if   (samenameOptions.CurrentSelectionIndex   ==   (int)   SameNameOption.OverWrite)
                {
                          myIsolatedStorage.DeleteFile(filepath);
                  }


                                             
        }

        IsolatedStorageFileStream   fileStream   =   myIsolatedStorage.CreateFile(filepath);

          bitmap.SetSource(iterPicture.GetImage());

        WriteableBitmap   wb   =   new   WriteableBitmap(bitmap);

        Extensions.SaveJpeg(wb,   fileStream,   wb.PixelWidth,   wb.PixelHeight,   0,   85);

        fileStream.Close();

        copied++;

  }

[解决办法]
StatusBarControl是USERCONTROL,那没见你把MESSAGETEXTBOX,ADD到这个CONTAINER里去啊?

热点排行