gpt4 book ai didi

c# - WPF 中的自定义内容控件

转载 作者:太空狗 更新时间:2023-10-29 19:41:52 28 4
gpt4 key购买 nike

我想我在这里请求有关正确应用 WPF 的讲座,但我会捕获机会,因为我已经无计可施了。我认为这可能主要是由于我在完全接受 WPF 模板和样式方面懒惰的结果,所以我很乐意听任何此类讲座。

我正在编写一种音频编辑器/事件编排器。我有一个我相当满意的轨道编辑器。但是,我主要使用自定义控件来构建它(我知道,这可能是 WPF 的罪过)。为了与该主题保持一致,我想为轨道制作一个标准标题,但我希望各个轨道“类型”能够定义该标题中的内容。我认为在边缘定义一种“抓地力”然后允许实现者“填充”物质的控件会很好地工作。但是,我不知道如何在不使用样式的情况下在 WPF 中执行此操作,即使我最终使用了样式,我也想了解这一点。

这可能归结为想要一种简单的 ContentControl 控件(例如按钮)的示例实现,但找不到一个(AvalonDock 除外,它最终使用 - 我确定正确 - 用于此的模板) .在我看来,xaml 看起来像这样:

<ContentControl x:Class="TestArea.CustomContentControl2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Hello"/>
<ContentPresenter Grid.Column="1"/>
</Grid>

当然,那是行不通的。我相当确定我可以通过在幕后玩弄重载技巧来完成同样的事情,但如果我能做这样的事情那就太好了。我真的必须把我所有可怕的、程序性的方式抛在脑后,并使用你所说的这些风格吗?如果是这样,至少有人可以告诉我该按钮在框架中的样子吗?

最佳答案

这是从 ContentControl 派生以完成您想要的任务的完整示例:Creating Customized UserControls (Deriving from ContentControl) in WPF 4

Pete 的 ContentPresenter 正在做与您的示例中相同的事情。

关于c# - WPF 中的自定义内容控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4536563/

28 4 0
文章推荐: c# - 归档数千个文件和 7zip 限制
文章推荐: c++ - C/C++ 编译器对运算符优先级/求值有多严格?
文章推荐: c++ - std::vector 成员 C++ 的总和
文章推荐: c# - AOP 性能开销