我正在设计 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文件中。
答案 0 :(得分:3)
我认为在你的情况下你需要向MVVM
的方向看,因为项目的进一步复杂化会带来一些困难。您可以为一个ViewModel's
创建多个View
。 View
的角色可能适合:
用户控件
的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.");
}
}
}
实际的方法位于我们添加的奇数项目页面的类中。