首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏dino.c的专栏

    为什么ContentControl的ControlTemplate里放两个ContentPresenter会出问题(绕口)

    简单的HeaderedContentControl 上周五收到反馈,在一个ContentControl的ControlTemplate中放两个ContentPresenter会出错。 虽然没看过ContentControl的源码,但我了解到如果ContentPresenter在ContentControl的ControlTemplate中,当ContentPresenter的Content 3.1 使用ContentControl 使用ContentControl代替Header的ContentPresenter是最简单直接的解决方案。 我常常用ContentControl代替ContentPresenter,这没什么不好的。 (因为在WPF中ContentPresenter比ContentControl少了一大堆文本相关的属性,所以在WPF常常这么做。)

    79930发布于 2019-03-08
  • 来自专栏林德熙的博客

    WPF 应用启动过程同时启动多个 UI 线程且访问 ContentPresenter 可能让多个 UI 线程互等

    碰到 ContentPresenter 类型,让 ContentPresenter 类型的静态构造函数能被执行,代码如下 先在 App.xaml 定义资源,定义的资源刚好碰到 ContentPresenter 如上代码将需要创建 ContentPresenter 对象 在 App.xaml.cs 里,在 App 构造函数再启动另一个 UI 线程,在新 UI 线程里面访问 ContentPresenter 类型的 在主 UI 线程进入 Create_BamlProperty_ContentPresenter_ContentSource 方法,需要等待 ContentPresenter 的静态构造函数执行完成,才能释放主 ContentPresenter 的静态构造函数。 如果在主 UI 线程碰到 ContentPresenter 的相关属性时,那么此时的 ContentPresenter 的静态构造函数就由主 UI 线程执行,也没有任何问题。

    93910编辑于 2022-08-12
  • 来自专栏林德熙的博客

    win10 uwp 修改Pivot Header 颜色

    Grid.Resources> <Style x:Key="BaseContentPresenterStyle" TargetType="<em>ContentPresenter</em> > <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter > <ObjectAnimationUsingKeyFrames Storyboard.TargetName="<em>ContentPresenter</em> x:Name="ContentPresenter" Content="{TemplateBinding Content}" > </ContentPresenter> </Grid>

    80120发布于 2018-09-19
  • 来自专栏dino.c的专栏

    [UWP]合体姿势不对的HeaderedContentControl

    前言 HeaderedContentControl是WPF中就存在的控件,这个控件的功能很简单:提供Header和Content两个属性,在UI上创建两个ContentPresenter并分别绑定到Header 和Content,让这两个ContentPresenter合体组成HeaderedContentControl。 {TemplateBinding Header}" ContentTemplate="{TemplateBinding HeaderTemplate}"/> <ContentPresenter 但同样地这就把WPF的遗留问题完全保留下来了:因为使用了StackPanel,所以VerticalContentAlignment无论怎么设置都是无效的,Content都是直接趴在Header下面,两个ContentPresenter HorizontalContentAlignment和VerticalContentAlignment也从Left和Top改为Stretch,毕竟很多时候使用ContentPresenter 都要把这两个属性改为

    1.3K30发布于 2019-01-18
  • 来自专栏dino.c的专栏

    [UWP 自定义控件]了解模板化控件(2):模仿ContentControl

    在MyContentControl中,ControlTemplate只有一个元素ContentPresenter,它使用TemplateBinding绑定到自己所在的MyContentControl的公共属性 对经常使用ControlTemplate的开发者来说ContentPresenter和TemplateBinding都不是陌生的概念。 2.2 ContentPresenter ContentPresenter用于显示内容,默认绑定到ContentControl的Content属性。 基本上所有ContentControl中都包含一个ContentPresenterContentPresenter直接从FrameworkElement派生。 通常在ContentPresenter上使用TemplateBinding的属性不会太多,因为很大一部分Control的属性都是可属性值继承的,即默认使用VisualTree上父节点所设置的属性值,譬如字体属性

    95220发布于 2019-01-18
  • 来自专栏hbbliyong

    WPF Trigger for IsSelected in a DataTemplate for ListBox items

    -- snipped for brevity --> <ContentPresenter Grid.Row="1" /> </ControlTemplate> </Setter.Value> </Setter> </Style> I modified the ContentPresenter in the following way in order to test out using the "FindAncestor" RelativeSource: <ContentPresenter Grid.Row="1"> <ContentPresenter.Style> <Style TargetType="{x:Type <em>ContentPresenter</em>}"> > </ContentPresenter> This works, but when I move similar code into the XAML file representing a View

    2.1K40发布于 2018-03-05
  • 来自专栏林德熙的博客

    win10 uwp 修改Pivot Header 颜色

    Grid.Resources> <Style x:Key="BaseContentPresenterStyle" TargetType="<em>ContentPresenter</em> > <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter > <ObjectAnimationUsingKeyFrames Storyboard.TargetName="<em>ContentPresenter</em> x:Name="ContentPresenter" Content="{TemplateBinding Content}" > </ContentPresenter> </Grid>

    42920编辑于 2022-08-04
  • 来自专栏dino.c的专栏

    [UWP 自定义控件]了解模板化控件(8):ItemsControl

    譬如这段XAML: <local:SimpleItemsControl> <ContentPresenter Content="this is ContentPresenter" /> 本身就是容器,所以它将直接被放到ItemsPanel中;Rectangle 不是容器,需要创建一个ContentPresenter,将Rectangle 设置为这个ContentPresenter的Content = element as ContentPresenter) ! = element as ContentPresenter) ! = null) { contentPresenter.Content = item; contentPresenter.ContentTemplate

    2K50发布于 2019-01-18
  • 来自专栏dino.c的专栏

    [WPF自定义控件库] 给WPF一个HyperlinkButton

    不过在Silverlight中为了显示MouseOver时出现的下划线使用了两层内容,一层用于正常显示(contentPresenter),另一层用于显示下划线(UnderlineTextBlock), x:Name="contentPresenter" Content="{TemplateBinding Content}"/> 但是这样效果十分差,重叠在一起的文本看上去变得模糊。 而UWP中的HyperlinkButton的下划线是代码里写死的,大概是这样: if (VisualTreeHelper.GetChildrenCount(contentPresenter) == 1 > </ContentPresenter> </Grid> 上面是HyperlinkButton的DefaultStyle的大致内容。 (我记得在UWP中就没有这个问题,UWP的ContentPresenter自带透明背景) 4. 结语 HyperlinkButton明明很重要但WPF又不提供,幸好自己写起来也很简单。

    1.7K20发布于 2019-08-23
  • 来自专栏CSharp编程大全

    WPF 如何修改button圆角(经典)

    <Border.Background>#FFDDDDDD</Border.Background> <ContentPresenter TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" ></ContentPresenter BorderBrush="Black" CornerRadius="30" Background="{TemplateBinding Background}"> <ContentPresenter CornerRadius:圆角的大小 Background:背景颜色"{TemplateBinding Background}":这个就是使用上面<Button>的Background属性值作为他的值 <ContentPresenter BorderThickness="1" CornerRadius="30" Background="{TemplateBinding Background}"> <ContentPresenter

    4.1K21发布于 2021-02-26
  • 来自专栏dino.c的专栏

    [WPF自定义控件库] 自定义控件的代码如何与ControlTemplate交互

    ControlTemplate中包含ExpanderToggleButton及ContentPresenter两个元素。 3. "; protected UIElement ContentPresenter { get; private set; } public override void OnApplyTemplate () { base.OnApplyTemplate(); ContentPresenter = GetTemplateChild(ContentPresenterName == null) return; ContentPresenter.Visibility = IsExpanded ? Visibility.Visible : Visibility.Collapsed; } } 上面的代码实现了获取ContentPresenter并根据IsExpanded 的值将它显示或隐藏。

    2.7K20发布于 2019-05-23
  • 来自专栏dino.c的专栏

    使用 XAML 格式化工具:XAML Styler

    而且看看下面两个 ContentPresenter,同样都有 Margin 属性、HorizontalAlignment 属性,VerticalAlignment 属性,RecognizesAccessKey 属性,SnapsToDevicePixels 顺序ing,但你能看到第二个 ContentPresenter 后面偷偷塞了个 Margin 吗: <ContentPresenter Margin="{ VerticalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> <ContentPresenter 格式化文档后上面的 XAML 就会变成这样: <ContentPresenter Margin="{TemplateBinding Padding}" HorizontalAlignment RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <ContentPresenter

    2K20发布于 2021-01-21
  • 来自专栏walterlv - 吕毅的博客

    UWP 轻量级样式定义(Lightweight Styling)

    ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="<em>ContentPresenter</em> ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="<em>ContentPresenter</em> /VisualStateGroup> </VisualStateManager.VisualStateGroups> <<em>ContentPresenter</em> x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" BorderThickness="{TemplateBinding

    93720发布于 2020-02-10
  • 来自专栏林德熙的博客

    win10 uwp 按下等待按钮

    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="<em>ContentPresenter</em> <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="<em>ContentPresenter</em> <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="<em>ContentPresenter</em> VisualStateGroup> </VisualStateManager.VisualStateGroups> <<em>ContentPresenter</em> x:Name="ContentPresenter" AutomationProperties.AccessibilityView

    1.1K20发布于 2018-09-18
  • 来自专栏hbbliyong

    WPF模板

    /> </LinearGradientBrush> </Border.Background> <ContentPresenter Background="{TemplateBinding Property=Background}" > <ContentPresenter Background="{TemplateBinding Property=Background}" > <ContentPresenter

    1.2K40发布于 2018-03-05
  • 来自专栏chester技术分享

    Avalonia的模板控件(Templated Controls)

    示例代码 下面是一个简单的TemplatedControl示例,展示如何创建一个自定义的控件: 首先,我们定义模板让其包含一个Button和ContentPresenterContentPresenter展示调用时的子控件。 <Button Name="PART_Button" Content="{TemplateBinding Content}" /> <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Name="contentPresenter" HorizontalAlignment="Stretch </ControlTemplate> </Setter> </Style> </Styles> 然后,在C#代码中实现类,需要定义Button的Content属性,点击事件,和ContentPresenter

    1.3K10编辑于 2024-04-13
  • 来自专栏dino.c的专栏

    [UWP 自定义控件]了解模板化控件(9):UI指南

    </Grid> <ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView Name="PointerFocused" /> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" 幸好现在的主流是扁平化的简单的设计,在UWP中按钮的模板被大大简化: <ContentPresenter x:Name="ContentPresenter" BorderBrush="{TemplateBinding

    1.6K20发布于 2019-01-18
  • 来自专栏dino.c的专栏

    [WPF自定义控件]从ContentControl开始入门自定义控件

    <Ellipse Stroke="DarkOrange" StrokeThickness="3" Fill="LightPink"/> <ContentPresenter ContentPresenter ContentPresenter用于显示内容,默认绑定到ContentControl的Content属性。 基本上所有ContentControl中都包含一个ContentPresenterContentPresenter直接从FrameworkElement派生。 通常在ContentPresenter上使用TemplateBinding的属性不会太多,因为很大一部分Control的属性的值都可继承,即默认使用VisualTree上父节点所设置的属性值,譬如字体属性 }" ContentTemplate="{TemplateBinding HeaderTemplate}" /> <ContentPresenter

    4.8K40发布于 2019-05-17
  • 来自专栏liulun

    SilverLight企业应用框架设计【二】框架画面

    "0" Fill="#B5B5B5" IsHitTestVisible="False" RadiusX="1" RadiusY="1"/> <ContentPresenter x:Name="contentPresenter" x:Name="contentPresenter" Cursor="Hand "0" Fill="#B5B5B5" IsHitTestVisible="False" RadiusX="1" RadiusY="1"/> <ContentPresenter x:Name="contentPresenter"

    89730编辑于 2022-05-09
  • 来自专栏czwy的博客

    [WPF]动手写一个简单的消息对话框

    Binding DialogMode, Converter={helper:EnumExcludeConverter}, ConverterParameter='Mini'}" /> <ContentPresenter </toolkit:ImageButton> </StackPanel> </DataTemplate> 定义好了信息区域和交互区域的几种模板后,AlterDialogWindow声明两个ContentPresenter RowDefinition Height="*" /> <RowDefinition Height="auto" /> </Grid.RowDefinitions> <ContentPresenter > </ContentPresenter> <ContentPresenter Grid.Row="1" Margin="0,0,0,16" > </ContentPresenter> </Grid> 至此,一个消息对话框就基本完成了。

    1.1K11编辑于 2023-11-23
领券