gpt4 book ai didi

c# - 在 ResourceDictionary 中添加 .cs?

转载 作者:太空狗 更新时间:2023-10-29 23:11:35 24 4
gpt4 key购买 nike

我在资源字典中有 DataTemplate,在某些中,我需要按钮,但我不知道如何使用代码隐藏来管理事件。

我试着把一个类放在我的资源字典中:

<ResourceDictionary 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SLProject.Templates"
x:Class="TVTemplate">

我在 cs 文件中这样定义类:

namespace SLProject.Templates
{
partial class TVTemplate
{

}
}

构建没问题,但是当应用程序启动时,我收到以下 XAML 错误:

AG_E_PARSER_BAD_TYPE

我尝试了所有我知道的方法,比如将类的种类更改为 ClassModifier,将类设置为 RessourceDictionnary 的继承类……没办法。

有人有想法...

谢谢。

最佳答案

使用 x:Class属性允许您为 ResourceDictionary 定义代码隐藏.您必须指定类的完整命名空间(即 x:Class="WpfApplication.MyClass" ),并且此类必须定义为 partial (至少 VS 2010 会提示并且在没有这种修饰符的情况下无法编译)。

我模拟了一个简单的例子:

1.新建一个WPF应用程序项目(WpfApplication)

2. 添加一个新的类文件(TestClass.cs)并粘贴以下代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Windows;

namespace WpfApplication
{
public partial class TestClass
{
private void OnDoubleClick(object obj, MouseButtonEventArgs args)
{
MessageBox.Show("Double clicked!");
}
}
}

3. 添加一个新的ResourceDictionary (Resources.xaml),打开文件并粘贴以下代码

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication.TestClass">
<Style TargetType="{x:Type Label}">
<EventSetter Event="Label.MouseDoubleClick" Handler="OnDoubleClick"/>
</Style>
</ResourceDictionary>

4. 最后,打开MainWindow.xaml 并输入以下代码

<Window x:Class="WpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary Source="Resources.xaml"/>
</Window.Resources>
<Grid>
<Label Content="Double click here..." HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Background="Red"/>
</Grid>
</Window>

在示例中,我从 Style 连接了一个双击事件。 ,因为这是一个需要您从 ResourceDictionary 中调用一些代码的场景.

关于c# - 在 ResourceDictionary 中添加 .cs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2356727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com