WPF中的自定义ContentControl

Jef*_*eff 8 .net c# wpf wpf-controls

我想我在这里要求关于正确应用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>
Run Code Online (Sandbox Code Playgroud)

但是,当然,这不起作用.我很确定我可以通过在幕后玩重载来扯掉同样的东西,但如果我可以做这样的事情会很好.我真的必须把所有可怕的,程序性的方法放在我身后并使用你所说的这些风格吗?如果是这样,有人至少可以告诉我该按钮在框架中看起来像什么?

Ric*_*key 5

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

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

  • 链接已死。 (2认同)