XAML页面翻转扭曲

XAML页面翻转扭曲

问题描述:

我有这个Page.xamlXAML页面翻转扭曲

<UserControl x:Class="SLBookDemoApp.Page" 
    xmlns="http://schemas.microsoft.com/client/2007" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:SLMitsuControls;assembly=SLMitsuControls" 
    Width="800" Height="600" Loaded="UserControl_Loaded"> 
    <Grid> 
     <local:UCBook x:Name="book" Margin="50" /> 
    </Grid> 
</UserControl> 

和记者Page.xaml.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using SLMitsuControls; 

namespace SLBookDemoApp 
{ 
    public partial class Page : UserControl, IDataProvider 
    { 
     public Page() 
     { 
      InitializeComponent(); 
     } 

     private List<Grid> pages; 

     private void UserControl_Loaded(object sender, RoutedEventArgs e) 
     { 
      /* 
      pages = new List<Button> 
      { 
       new Button { Content = "Page 0"}, 
       new Button { Content = "Page 1", Background = new SolidColorBrush(Colors.Green) }, 
       new Button { Content = "Page 2", Background = new SolidColorBrush(Colors.Yellow) }, 
       new Button { Content = "Page 3", Background = new SolidColorBrush(Colors.Brown) }, 
       new Button { Content = "Page 4", Background = new SolidColorBrush(Colors.Magenta) }, 
       new Button { Content = "Page 5", Background = new SolidColorBrush(Colors.Red) } 
      }; 
      */ 

      System.Windows.Application.LoadComponent(this, new System.Uri("/SLBookDemoApp;PagTeste2.xaml", System.UriKind.Relative)); 
      Grid LayoutRoot = ((Grid)(FindName("LayoutRoot"))); 
      //TextBlock testTextBlock = ((TextBlock)(FindName("testTextBlock"))); 

      pages = new List<Grid> 
      { 
      }; 

      pages.Add(LayoutRoot); 
      /* 
      int i = 0; 
      foreach (var b in pages) 
      { 
       if (i % 2 == 0) 
        b.Click += Button_Click; 
       else 
        b.Click += Button_Click_1; 
       i++; 
      } 
      */ 

      book.SetData(this); 
     } 

     #region IDataProvider Members 

     public object GetItem(int index) 
     { 
      return pages[index]; 
     } 

     public int GetCount() 
     { 
      return pages.Count; 
     } 

     #endregion 

     private void Button_Click(object sender, RoutedEventArgs e) 
     { 
      book.AnimateToNextPage(500); 
     } 

     private void Button_Click_1(object sender, RoutedEventArgs e) 
     { 
      book.AnimateToPreviousPage(500); 
     } 
    } 
} 

我wnat到包括XAML是这样PagTeste2 .xaml

<Grid 
     xmlns="http://schemas.microsoft.com/client/2007" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     x:Class="SLBookDemoApp.PagTeste2" 
     x:Name="LayoutRoot"> 
     <Rectangle Width="192" Height="80" Fill="#FF8F0A0A" Stroke="#FF000000" Canvas.Left="224" Canvas.Top="104"/> 

</Grid> 

与通信PagTeste2.xaml.cs

using System; 
using System.IO; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
//using System.Windows.Navigation; 
using SLMitsuControls; 

namespace SLBookDemoApp 
{ 
    public partial class PagTeste2 
    { 
     public PagTeste2() 
     { 
      this.InitializeComponent(); 

      // Insert code required on object creation below this point. 
     } 
    } 
} 

我在这一行

System.Windows.Application.LoadComponent(this, new System.Uri("/SLBookDemoApp;PagTeste2.xaml", System.UriKind.Relative)); 

任何人都知道为什么得到一个错误?

使用这个代替:

this.Content = new PagTeste2(); 

你只需做任何形式的集会加载的,如果你从不同的程序集加载的内容,即使这样你就不会使用它来设置内容。

如果您实际上询问如何动态加载程序集,请参阅MS have an example of how

您可能需要尝试/SLBookDemoApp;component/PageTeste2.xaml。

+0

我已经尝试过,并没有工作。 我怎么能把这个工作? – Bonfocchi 2009-08-06 11:07:09

如果PagTeste2.xaml是在你的项目的顶层文件夹,您可以使用此代码加载:

Application.LoadComponent(
    this, 
    new System.Uri(
    "/SLBookDemoApp;component/PagTeste2.xaml", 
    System.UriKind.Relative 
) 
); 

如果你已经在你的项目中的子文件夹放置PagTeste2.xaml(比如文件夹Tests),你需要包含uri中文件的路径:

Application.LoadComponent(
    this, 
    new System.Uri(
    "/SLBookDemoApp;component/Tests/PagTeste2.xaml", 
    System.UriKind.Relative 
) 
); 

另外,请密切注意拼写。 PagTest2.xaml不同于PageTeste2.xamlPageTest2.xaml。显然测试插入e页面之前。

您可以阅读更多关于pack URI's on MSDN