我正在Silverlight 4中构建自定义用户控件。控件背后的想法是将带有分页器的数据网格从用户页面移至控件。 当前数据网格看起来像:

                <sdk:DataGrid x:Name="GridCustomers" Height="300" VerticalAlignment="Top" ItemsSource="{Binding CustomerModelsPagedCollectionView}" AutoGenerateColumns="False" ScrollViewer.VerticalScrollBarVisibility="Visible" IsReadOnly="True" SelectionChanged="GridCustomers_SelectionChanged">
                    <sdk:DataGrid.Columns>
                        <sdk:DataGridTextColumn Header="Numer bilingowy" Binding="{Binding BillingNumber}" />
                        <sdk:DataGridTextColumn Header="Nazwa klienta" Binding="{Binding CustomerName}"/>
                        <sdk:DataGridTextColumn Header="Skrócona nazwa" Binding="{Binding ShortCustomerName}"/>
                        <sdk:DataGridTextColumn Header="Kod pocztowy" Binding="{Binding PostalCode}" />
                        <sdk:DataGridTextColumn Header="Miasto" Binding="{Binding City}" />
                        <sdk:DataGridTextColumn Header="Ulica" Binding="{Binding Street}" />
                        <sdk:DataGridTemplateColumn Header="Urządzenia">
                            <sdk:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox x:Name="DeviceComboBox"  SelectionChanged="DeviceComboBox_SelectionChanged">
                                        <ComboBox.Items>
                                            <ComboBoxItem x:Name="Switch" Content="Switche"/>
                                            <ComboBoxItem x:Name="Firewall" Content="Firewalle"/>
                                            <ComboBoxItem x:Name="Host" Content="Hosty" />
                                        </ComboBox.Items>
                                    </ComboBox>
                                </DataTemplate>
                            </sdk:DataGridTemplateColumn.CellTemplate>
                        </sdk:DataGridTemplateColumn>
                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>

除了从几页中删除此网格的重复代码之外,我最想实现的目标是使此控件具有灵活性,以由用户定义该模板列。 换句话说,我试图公开DataGrid列属性,以便可以添加不同的DataGridTemplateColumns。 由于我对SL的经验不足,因此我做了一些研究,根据我发现的“附加属性”,这是我需要的(需要对此进行确认)。 我使用本教程定义了DependencyProperty 像这样(控件代码-CustomerControl):

   public static readonly DependencyProperty ColumnTemplateProperty = DependencyProperty.RegisterAttached(
        "ColumnTemplate",
        typeof(DataGridTemplateColumn),
        typeof(CustomerControl),
        null);

public static void SetColumnTemplate(DependencyObject obj, DataGridTemplateColumn column)
{
    obj.SetValue(ColumnTemplateProperty, column);
}

public static DataGridTemplateColumn GetColumnTemplate(DependencyObject obj)
{
    return (DataGridTemplateColumn)obj.GetValue(ColumnTemplateProperty);
}

控件的XAML:

        <local:CustomerControl x:Name="temp" >
            <local:CustomerControl.ColumnTemplate>
                <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox x:Name="DeviceComboBox"  SelectionChanged="DeviceComboBox_SelectionChanged">
                            <ComboBox.Items>
                                <ComboBoxItem x:Name="Switch" Content="Switche"/>
                                <ComboBoxItem x:Name="Firewall" Content="Firewalle"/>
                                <ComboBoxItem x:Name="Host" Content="Hosty" />
                            </ComboBox.Items>
                        </ComboBox>
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellTemplate>
            </local:CustomerControl.ColumnTemplate>
        </local:CustomerControl>

由于我公开了'DataGridTemplateColumn'类型的属性,因此我想其余的模板声明都不会更改,但这是行不通的:(我不确定此附加属性。您能否给我一些提示,以使它起作用我提出的方式(或者我应该说“想像”我是如何工作的。)甚至有可能吗?我知道事实上这里存在一些重大缺陷,但仅出于记录目的,错误我正在得到:

错误3在类型'DataGridTemplateColumn'中找不到可连接属性'CellTemplate'。错误2在解析规则PropertyElement :: =中出现意外的PROPERTYELEMENT。 物业内容? ENDTAG

谢谢你的任何指示;)

  ask by neurotix translate from so

本文未有回复,本站智能推荐:

1回复

Silverlight依赖属性未在自定义控件中通知

脚本 我有一个自定义组合框,我在Combobox选择框中有一个标签。 我需要更改标签,如我在第二张图片中所述。 但我只想在选中项目时选中复选框。 我可以选择多个项目,因此标签应该更新为所选项目的逗号分隔值。 如果没有足够的空间来显示标签的全文,则应该有“...”符号表示在组合框中选
1回复

如何在Silverlight中创建自定义文本框控件?

我正在尝试创建一个Silverlight自定义文本框。 我希望文本框的背景根据其中的值而变化。 如果小于零,它将变为红色;如果大于零,则将变为白色。 我该如何实现? 我已经创建了一个简单的类和一个用户控件,但仍无法实现目标。 这是代码 自定义文本框代码 用户控制C
1回复

Silverlight:“对齐”按钮控件位于Datagrid单元内

我已经尝试了一段时间了。 我只是被困住了,无法通过它。 datagrid单元中有三个控件。 1:超链接按钮2:清除按钮3:搜索按钮 我需要做的是将“清除”和“打开按钮”对齐到列的右侧。 渔获是列是可调整大小的。 我试图给超链接按钮一个固定的宽度,看起来不错,但是在调整列的
1回复

用户控件中的自定义对话框

我们有一个自定义对话框(源自ContentControl ),它通常位于UserControl内部。 对话框本身具有可以关闭的功能。 在检查时,关闭功能似乎仅关闭对话框本身,而不是其父容器。 我们的用户控件通常是这样创建的 现在,这意味着当我们关闭对话框时,我们剩下许多Use
1回复

在设计时通过属性更改Silverlight / WPF中的内部用户控件

我正在为WPF创建一些自定义用户控件。 该用户控件包含自定义依赖项属性,因此我可以在设计器中填写它们。 此属性之一称为“ InnerUserControlType”。 此依赖关系属性是一个自定义枚举,其中包含一些值,例如TextBox,ComboBox,Label,CheckBox等。
2回复

关于Silverlight sdk和子输入,C#中的DataGrid控件的问题

我正在使用DataGrid控件编写Silverlight 5 Web应用程序。 我确实有一个有趣的问题。 我为每一行使用模板列。 每一行代表一个可观察集合中的一个数据项。 每行包含一个复选框,一个文本块和一个文本框。 我的错误发生的环境是一种行数多于Silverlight可
2回复

自定义自定义工具提示WPF / Silverlight

我有一个自定义的工具提示样式,效果很好,但是在某些情况下,我希望能够隐藏箭头(“路径”部分)或以其他方式放置工具提示。 我如何实现这一目标,以及如何在实践中进行设置? 99%的时间通过XAML和绑定设置了工具提示,但有时使用代码和ToolTipService进行设置
1回复

在自定义布局控件中创建的控件返回Null

我试图创建自己的自定义布局控件,所以我创建了一个UserControl,如下所示: 然后在使用此控件的MainPage.xaml中: 到目前为止,一切都可以正常编译并正确显示。 但是当我尝试在Loaded事件中使用控件时: MyRichTextBox对象返回null .
2回复

创建Silverlight覆盖用户控件

我正在创建一个silverlight用户控件,如果属性设置为true,它将显示一个透明的叠加层,其中包含任何包含xaml的文本。 例如: 我不太确定的是如何实现将任意xaml放在我的用户控件中的能力,如上所述。 谢谢你的帮助。
1回复

Wpf Devexpress控件的自定义工具提示

我创建了一个自定义工具提示,该提示显示给WPF控件,但不显示给DevExpress WPF控件,我不知道为什么。 要添加工具提示,我需要执行以下操作: 我的自定义控件继承自Tooltip控件,并且具有一些我添加的属性,例如Title , Text和ImageType 。 对于不属