我正在使用ListBox的controlTemplate来显示一个集合.我想显示带有边框的所有项目,例如网格(所有线条大小相同).当我给每个listBoxItem一个边框时,两个项之间的行有一个double大小.(由第一个项目的下边框和第二个项目的上边框制成)
所以问题是:我可以在项目的单面设置/隐藏边框吗?(比如css中的'border-top')
我想知道是否有任何方式来设置WPF布局网格的单元格,行和列的样式.我一直在努力寻找任何信息,而我发现的一些信息并没有提供相关信息.
我想将网格样式设置为链接屏幕截图中的样式.
如果实际控件不支持它,我可以以某种方式继承它然后执行吗?我对WPF很新,所以任何帮助都会非常感激.
另外一件事,我知道我可以为网格中的每个控件设置样式,但这看起来有点矫枉过正.我想有一个自己做的网格.
我厌倦了一遍又一遍地创建相同的图像+文本按钮,我想将标记移动到控件模板.这是我的问题:我需要提供模板绑定来将图像和文本添加到模板化按钮,而Button控件似乎没有我可以绑定的属性.
到目前为止,我的模板看起来像这样(对于未知的模板绑定,使用'???'):
<ControlTemplate x:Key="ImageButtonTemplate" TargetType="{x:Type Button}">
<StackPanel Height="Auto" Orientation="Horizontal">
<Image Source="{TemplateBinding ???}" Width="24" Height="24" Stretch="Fill"/>
<TextBlock Text="{TemplateBinding ???}" HorizontalAlignment="Left" Foreground="{DynamicResource TaskButtonTextBrush}" FontWeight="Bold" Margin="5,0,0,0" VerticalAlignment="Center" FontSize="12" />
</StackPanel>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
是否可以使用控件模板创建此图像+文本按钮,或者我是否必须转到用户控件才能执行此操作?如果可以使用控件模板完成,我该如何设置模板绑定?
我DataGrid
在我的Silverlight应用程序中有一个很好用,在我操作ItemsSource
集合时添加一行或删除一行.但是,我希望在最后一个数据行之后有一个额外的行或控件.
我可以使用a ControlTemplate
并将RowsPresenter行设置为自动高度,在最后一行之后显示附加控件,但这意味着当渲染区域变得太小时,行永远不会滚动.但是,如果我将RowsPresenter行高度更改为Star,则行会滚动,但附加控件会显示为固定到数据网格的底部而不是最后一行的底部.
有没有办法在RowsPresenter上拥有Star高度行为,同时仍然可以按照我想要的方式显示控件?
我目前的想法是,我需要以某种方式使用LoadingRow事件来查找最后一行的位置,并使用Canvas或类似方法将我的控件放在适当的位置.
思考?
在此先感谢您的帮助.
我还问了一个问题(并最终回答)关于将一个控件固定在另一个控件下面的问题,如果您不希望自定义行与其余行一起滚动(例如在我的情况下,那么可以用来解决此问题)我希望另一个datagrid标题行显示总计并浮动其他行).
我想将Expander按钮放在标签的右侧.这该怎么做?
我正在尝试学习WPF,并试图通过使用样式使默认的.Net控件看起来不同.使用C#作为我的首选语言,尽管下面的所有代码都是WPF标记.
我今天用新主题设置了gmail(见下图),从而让我自己成为挑战,可以在WPF中完成.
我设法实现的是Spam
通过使用带有控件模板和触发器的样式来创建中间按钮.
右侧和左侧按钮非常相似,但只有2个不同.它们的左侧或右侧的圆角半径为1,边距为15,而中间的按钮则将它们都设置为0.
问题!
Q1.可以通过某种类型的继承来完成,而不是复制整个样式并仅更改这两个属性.右侧和左侧按钮的位置基于现有样式,但它会进行2次视觉更改.我在创建新样式时已尝试过BasedOn属性,但无法编辑所需的属性.
Q2.样式是在WPF中解决此问题的正确方法.在WinForms中,您将创建一个自定义控件,该控件具有链接到枚举的可见属性,即您单击按钮,样式选项可能是Left,Middle,Right.
Q3.最难的问题直到最后.是否可以制作它,所以如果一个按钮应用了我的风格.然后当您将其背景颜色设置为蓝色时.然后按钮保持渐变但不是它们是灰白色,而是现在是蓝色的阴影.即背景线性渐变画笔基于,而不是覆盖已应用于按钮的背景颜色.或者这些需要定义单独的样式.我个人看不到没有某种类型的代码可以实现这一点,即在WPF标记中使用单个画笔制作渐变画笔.
即按钮如下方的蓝色按钮和灰色/普通按钮
我的风格
<Style x:Key="GoogleMiddleButton" TargetType="{x:Type Button}">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,1" EndPoint="0,0">
<GradientStop Color="#F1F1F1" Offset="0"/>
<GradientStop Color="#F5F5F5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="#666666"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="dropShadowBorder"
BorderThickness="0,0,0,1"
CornerRadius="1"
>
<Border.BorderBrush>
<SolidColorBrush Color="#00000000"/>
</Border.BorderBrush>
<Border Name="border"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
CornerRadius="0"
Background="{TemplateBinding Background}">
<Border.BorderBrush>
<SolidColorBrush Color="#D8D8D8"/>
</Border.BorderBrush>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</Border> …
Run Code Online (Sandbox Code Playgroud) 问题:
我有这样的标记(只有重要的行):
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs"
Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
namespace MainSolution.CONTROLTEMPLATES.Kunde
public partial class RTDeluxe : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
linkUl.InnerHtml = string.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以访问ul
代码隐藏的内部并且不会出现编译错误.但是,当我调试代码时,我得到一个NullReferenceException
因为linkUl
是NULL.
首先,我认为名称空间是原因.但是,经过几次尝试,我确信它们是正确的.在FileLocation
似乎是正确的,并且controltemplates
我的IIS的文件夹中有与它相应的ascx文件"孔德"文件夹中.
我有其他.ascx文件具有相同的结构 - >他们的工作就像一个魅力.
问题:
这种行为的名称空间还有其他原因吗?你有任何我可以看到的提示吗?
编辑:
RTDeluxe.ascx.designer.cs文件存在,生成的linkUl
如下所示:
protected global::System.Web.UI.HtmlControls.HtmlGenericControl linkUl;
Run Code Online (Sandbox Code Playgroud)
编辑2:
好的,我会尽力回答你的所有问题.感谢您的时间和反馈!
Name
在linkul-definition中添加了一个属性 - >没有更改.FindControl …
所以我创建了一个自定义RenderingTemplate并将其部署到CONTROLTEMPLATES\MyControlTemplates\
它基本上决定了我创建的自定义内容类型在显示时应该如何呈现.为此,我添加了这个:
<FormTemplates xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
<Display>CustomDispForm</Display>
</FormTemplates>
Run Code Online (Sandbox Code Playgroud)
但是,当SharePoint位于CONTROLTEMPLATES的子目录中时,SharePoint找不到我的自定义RenderingTemplate.但是,如果我将它移动到CONTROLTEMPLATES的根目录\ SharePoint将找到它.
根据文档,SharePoint也应该查看子目录,但似乎并非如此.这可能是个错误吗?我想看看我是否错过了什么,因为我更喜欢在root/<Custom>目录中放置自定义内容.
谢谢.
我想在按下按钮时将按钮的内容更改为另一个图像,但没有任何反应。
<Grid>
<Button Height="120" Width="75">
<Button.Template>
<ControlTemplate TargetType="Button">
<Image Source="no-press.png"/>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Content">
<Setter.Value>
<DataTemplate>
<Image Source="press.png"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
Run Code Online (Sandbox Code Playgroud)
谢谢你 :)