标签: controltemplates

调整一个特定方面的边框

我正在使用ListBox的controlTemplate来显示一个集合.我想显示带有边框的所有项目,例如网格(所有线条大小相同).当我给每个listBoxItem一个边框时,两个项之间的行有一个double大小.(由第一个项目的下边框和第二个项目的上边框制成)

所以问题是:我可以在项目的单面设置/隐藏边框吗?(比如css中的'border-top')

wpf border controltemplates

28
推荐指数
1
解决办法
1万
查看次数

样式化WPF布局网格背景(每个单元格,行,列)

我想知道是否有任何方式来设置WPF布局网格的单元格,行和列的样式.我一直在努力寻找任何信息,而我发现的一些信息并没有提供相关信息.

我想将网格样式设置为链接屏幕截图中的样式.

如果实际控件不支持它,我可以以某种方式继承它然后执行吗?我对WPF很新,所以任何帮助都会非常感激.

另外一件事,我知道我可以为网格中的每个控件设置样式,但这看起来有点矫枉过正.我想有一个自己做的网格.

截图http://img21.imageshack.us/img21/2842/capturehz8.png

wpf grid xaml styles controltemplates

26
推荐指数
3
解决办法
9万
查看次数

使用控件模板创建图像+文本按钮?

我厌倦了一遍又一遍地创建相同的图像+文本按钮,我想将标记移动到控件模板.这是我的问题:我需要提供模板绑定来将图像和文本添加到模板化按钮,而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)

是否可以使用控件模板创建此图像+文本按钮,或者我是否必须转到用户控件才能执行此操作?如果可以使用控件模板完成,我该如何设置模板绑定?

wpf controltemplates controltemplate

15
推荐指数
1
解决办法
2万
查看次数

如何在Silverlight中的DataGrid末尾包含自定义行?

DataGrid在我的Silverlight应用程序中有一个很好用,在我操作ItemsSource集合时添加一行或删除一行.但是,我希望在最后一个数据行之后有一个额外的行或控件.

我可以使用a ControlTemplate并将RowsPresenter行设置为自动高度,在最后一行之后显示附加控件,但这意味着当渲染区域变得太小时,行永远不会滚动.但是,如果我将RowsPresenter行高度更改为Star,则行会滚动,但附加控件会显示为固定到数据网格的底部而不是最后一行的底部.

有没有办法在RowsPresenter上拥有Star高度行为,同时仍然可以按照我想要的方式显示控件?

我目前的想法是,我需要以某种方式使用LoadingRow事件来查找最后一行的位置,并使用Canvas或类似方法将我的控件放在适当的位置.

思考?

在此先感谢您的帮助.

更新

我还问了一个问题(并最终回答)关于将一个控件固定在另一个控件下面的问题,如果您不希望自定义行与其余行一起滚动(例如在我的情况下,那么可以用来解决此问题)我希望另一个datagrid标题行显示总计并浮动其他行).

如何在Silverlight中将一个控件固定在另一个控件下面?

c# xaml datagrid silverlight-2.0 controltemplates

10
推荐指数
1
解决办法
6509
查看次数

右侧的扩展按钮:怎么做?

扩展器在右侧怎么样?

我想将Expander按钮放在标签的右侧.这该怎么做?

wpf xaml expander controltemplates wpf-controls

9
推荐指数
2
解决办法
2万
查看次数

WPF样式/模板继承

我正在尝试学习WPF,并试图通过使用样式使默认的.Net控件看起来不同.使用C#作为我的首选语言,尽管下面的所有代码都是WPF标记.

我今天用新主题设置了gmail(见下图),从而让我自己成为挑战,可以在WPF中完成.

新的GMail按钮

我设法实现的是Spam通过使用带有控件模板和触发器的样式来创建中间按钮.

右侧和左侧按钮非常相似,但只有2个不同.它们的左侧或右侧的圆角半径为1,边距为15,而中间的按钮则将它们都设置为0.

问题!

Q1.可以通过某种类型的继承来完成,而不是复制整个样式并仅更改这两个属性.右侧和左侧按钮的位置基于现有样式,但它会进行2次视觉更改.我在创建新样式时已尝试过BasedOn属性,但无法编辑所需的属性.

Q2.样式是在WPF中解决此问题的正确方法.在WinForms中,您将创建一个自定义控件,该控件具有链接到枚举的可见属性,即您单击按钮,样式选项可能是Left,Middle,Right.

Q3.最难的问题直到最后.是否可以制作它,所以如果一个按钮应用了我的风格.然后当您将其背景颜色设置为蓝色时.然后按钮保持渐变但不是它们是灰白色,而是现在是蓝色的阴影.即背景线性渐变画笔基于,而不是覆盖已应用于按钮的背景颜色.或者这些需要定义单独的样式.我个人看不到没有某种类型的代码可以实现这一点,即在WPF标记中使用单个画笔制作渐变画笔.

即按钮如下方的蓝色按钮和灰色/普通按钮

谷歌按钮2

我的风格

<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)

c# wpf user-interface styles controltemplates

6
推荐指数
1
解决办法
4750
查看次数

后面的ASP/C#代码无法通过标记达到控制

问题:
我有这样的标记(只有重要的行):

<%@ 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:
好的,我会尽力回答你的所有问题.感谢您的时间和反馈!

  1. 我重新启动了Visual Studio - >问题仍然存在.
  2. 我也已经清理了解决方案并部署了一个新解决方案. - >问题仍然存在.
  3. 当我调试并检查控件层次时,我可以看到标签不在那里.
  4. 当我更改ID时,编译器会在代码隐藏中抛出错误(这是正确的).如果我更改了ID,我会得到与之前相同的行为.
  5. 我也重新启动了我的IIS和整个电脑 - >没有变化.
  6. Name在linkul-definition中添加了一个属性 - >没有更改.
  7. 当我尝试使用FindControl …

c# asp.net controltemplates sharepoint-2010

6
推荐指数
1
解决办法
3735
查看次数

SharePoint找不到我的自定义RenderingTemplate

所以我创建了一个自定义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>目录中放置自定义内容.

谢谢.

sharepoint wss controltemplates

4
推荐指数
1
解决办法
2766
查看次数

带触发器的更改内容按钮

我想在按下按钮时将按钮的内容更改为另一个图像,但没有任何反应。

<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)

谢谢你 :)

wpf triggers button controltemplates

3
推荐指数
1
解决办法
3489
查看次数