Пользовательский ItemsControl Вопрос управления дочерним пространством - PullRequest
2 голосов
/ 05 марта 2011

У меня проблемы с добавлением элементов управления с x: name в мой пользовательский элемент управления.

Добавление x: name = "startDate" приводит к поломке всего. В противном случае это работает отлично.

У меня есть пользовательский элемент управления, унаследованный от ItemsControl.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace ControlCSI
{
    public partial class SlideMenu : ItemsControl
    {
        public SlideMenu()
        {
            // Required to initialize variables
            InitializeComponent();
        }
    }
}

Вот определение разметки этого класса

<ItemsControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="ControlCSI.SlideMenu"
d:DesignWidth="200" d:DesignHeight="800">

<ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Vertical" />
    </ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

<ItemsControl.Template>
    <ControlTemplate TargetType="ItemsControl">
        <Grid x:Name="LayoutRoot">
            <Border Height="auto" Grid.Column="0" CornerRadius="5" >
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="23" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Border Background="Transparent">
                        <Image Source="/ControlCSI;component/Images/GlossyBlack/bg_pulltab.png"  />
                    </Border>
                    <Grid Grid.Column="1" >
                        <Border CornerRadius="10,0,0,10" BorderBrush="#11c2f1" BorderThickness="0">
                            <Border.Background>
                                <ImageBrush  ImageSource="/ControlCSI;component/Images/GlossyBlack/bg_nav.png"/>
                            </Border.Background>
                            <ItemsPresenter />
                        </Border>
                    </Grid>
                </Grid>
            </Border>
        </Grid>
    </ControlTemplate>
</ItemsControl.Template>    

и вот реализация:

<ControlCSI:SlideMenu x:Name="SlideOutMenu" Width="200" VerticalAlignment="Stretch"  HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5" >
            <ControlCSI:SlideMenu.RenderTransform>
                <CompositeTransform TranslateX="180"/>
            </ControlCSI:SlideMenu.RenderTransform>

            <telerik:RadButton Margin="5,10,5,0"  Click="RadButton_Click" Tag="30" Content="30 Days" Style="{StaticResource SliderButton}"  />
            <telerik:RadButton  Click="RadButton_Click" Tag="60" Content="60 Days" Style="{StaticResource SliderButton}"/>
            <telerik:RadButton  Click="RadButton_Click" Tag="90" Content="3 Months" Style="{StaticResource SliderButton}"/>
            <telerik:RadButton  Click="RadButton_Click" Tag="180" Content="6 Months" Style="{StaticResource SliderButton}"/>
            <telerik:RadDatePicker x:Name="startDate" x:Uid="startDate"  DropDownOpened="startDate_DropDownOpened" DropDownClosed="startDate_DropDownClosed"    DateTimeWatermarkContent="Start Date" Style="{StaticResource SliderDatePicker}"  Template="{StaticResource RadDateTimePickerControlTemplate1}"  />
            <telerik:RadDatePicker  DropDownOpened="startDate_DropDownOpened" DropDownClosed="startDate_DropDownClosed"    DateTimeWatermarkContent="End Date" Style="{StaticResource SliderDatePicker}" Template="{StaticResource RadDateTimePickerControlTemplate1}"  />


        </ControlCSI:SlideMenu>

ошибки:

  A first chance exception of type 'System.NullReferenceException' occurred in ControlCSI
System.Windows.Data Error: BindingExpression path error: 'ErrorResources' property not found on 'ControlCSI.ResourceWrapper' 'ControlCSI.ResourceWrapper' (HashCode=42863040). BindingExpression: Path='ErrorResources.ErrorWindowTitle' DataItem='ControlCSI.ResourceWrapper' (HashCode=42863040); target element is 'ControlCSI.ErrorWindow' (Name=''); target property is 'Title' (type 'System.Object')..
System.Windows.Data Error: BindingExpression path error: 'ErrorResources' property not found on 'ControlCSI.ResourceWrapper' 'ControlCSI.ResourceWrapper' (HashCode=42863040). BindingExpression: Path='ErrorResources.ErrorWindowGenericError' DataItem='ControlCSI.ResourceWrapper' (HashCode=42863040); target element is 'System.Windows.Controls.TextBlock' (Name='IntroductoryText'); target property is 'Text' (type 'System.String')..
System.Windows.Data Error: BindingExpression path error: 'ErrorResources' property not found on 'ControlCSI.ResourceWrapper' 'ControlCSI.ResourceWrapper' (HashCode=42863040). BindingExpression: Path='ErrorResources.ErrorWindowErrorDetails' DataItem='ControlCSI.ResourceWrapper' (HashCode=42863040); target element is 'System.Windows.Controls.TextBlock' (Name='LabelText'); target property is 'Text' (type 'System.String')..

x: name создает локальную переменную, поэтому я предполагаю, что это проблема пространства имен?

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

В конце концов я переключился на UserControl (который после некоторой проверки документации был верным путем).

Я добавил кнопки и средства выбора даты внутри элемента управления и открыл их, привязав к свойствам зависимостей.

0 голосов
/ 05 марта 2011

Не думаю, что вы можете добавить x: Name к этому элементу управления, потому что он уже предоставляет свойство Name. Проверьте раздел замечаний [эта ссылка MSDN]. 1

Однако вы можете использовать это свойство Name так же, как вы можете использовать x: Name (я думаю).

Удачи

Добавление ссылки, потому что я не уверен, что правильно использовал поведение ссылки: P http://msdn.microsoft.com/en-us/library/cc189028%28v=vs.95%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...