如何在WPF中的一个XAML文件中添加多个类文件

时间:2014-02-22 19:00:17

标签: c# .net wpf xaml

我正在设计 UI库,我想将两个 C# file添加到XAML文件,以便在一个文件中我可以定义只有在该Xaml文件和另一个文件中使用的事件处理程序我可以为控件定义一些其他UI相关的样式。我希望我的xaml文件可以直接访问我的C#文件类。

我正在使用x:Class执行类似的操作:

例如:

我想在我的XAML文件中添加MainWindow.cs文件:

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="TemplateLibrary.MainWindow">

但遗憾的是,XAML仅支持将一个类添加到我的XAML中。有没有办法将多个C#文件添加到XAML文件中。

3 个答案:

答案 0 :(得分:3)

我认为在你的情况下你需要向MVVM的方向看,因为项目的进一步复杂化会带来一些困难。您可以为一个ViewModel's创建多个ViewView的角色可能适合:

  • 用户控件

  • 的DataTemplate

UserControl的情况下,这个类可以是部分的,这将补充另一个类。如果DataTemplate可以根据View类型动态更改内容。

此外,所有样式的Control必须包含在ResourceDictionary中并合并到 App.xaml 文件中。

答案 1 :(得分:1)

似乎后面的MainWindow代码已经是一个部分类文件,因此我们可以选择将一些成员放在使用同一名称空间中相同的部分类的其他cs文件中。

namespace TemplateLibrary
{
    public partial class MainWindow : Window
    {
        ...

制作UserControl时同样适用。

答案 2 :(得分:0)

更基本的是“如何将XAML可视对象绑定到代码”。 Ranny Meier建议将我的课程作为一个“部分课程”加上(不能再找到他)在主窗口页面上使用重定向的建议,但实际上工作正常 - 所有这些都在相同的名称空间中。

  

XAML

    <Button x:Name="Pnl_Btn_EditPaste" Click="Do_Btn_EditPaste_Click" VerticalAlignment="Top" Padding="2" Margin="-67,18,0,0" ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="36" Height="30" RenderTransformOrigin="1.976,-0.568">
         <Button.OpacityMask>
             <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/BnFace_paste.png"/>
         </Button.OpacityMask>
         <Button.Background>
             <ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/BnFace_paste.png"/>
         </Button.Background>
    </Button>

这是我们感兴趣的Button开场语句中的“Click =”部分或绑定。 。

  

mainwindow c#

   namespace WpfAppFoolAround
   {
     public partial class MainWindow : Window
     {
        public MainWindow()
        {
            InitializeComponent();
        }

        // -- Edit Controls ---------------------------------------------------------

        private void Do_Btn_EditPaste_Click(object sender, RoutedEventArgs e)
        {
            ContextControls.Btn_EditPaste(sender, e);
        }
     }
   }

主窗口上的垫片将我们重定向到类方法。 。

  

不同页面上的课程

    namespace WpfAppFoolAround
    {
        public partial class ContextControls
        {

           // -- Edit Controls ---------------------------------------------------

            internal static void Btn_EditPaste(object sender, RoutedEventArgs e)
            {
               Console.WriteLine("PASTE Editing Button Clicked.");
            }
        }
    }

实际的方法位于我们添加的奇数项目页面的类中。