Windows Vista Forums

Customer Control Lessons Leaned So Far...

  1. #1


    john Guest

    Customer Control Lessons Leaned So Far...

    All:

    I have been developiing a simple (what I thought was simple) custom
    control (derived from UserControl). The basic functionality is that of
    a Jeopardy-style game square --- it should be a rounded rectangle that
    is filled with a gradient brush that sizes itself to the grid cell
    (parent) to which it is placed.

    What I have learned...

    * A UserControl can only have one child element. I originally used a
    Rectangle, but then could not add the question/answer text (no way to
    add a Label or TextBlock, etc.). Laurent Bugnion suggested using a
    container for the single allowed child and add children this way. I
    tried this and used a Canvas - it worked, somewhat...

    * I added 2 children to the Canvas -- a rectangle and a TextBlock.
    Originally, the rectangle was marked as
    Horizontal/VerticalAlignment="Stretch", with no specific Width and
    Height specified. This worked when the Rectangle was the direct child
    of the UserControl - but failed to display when the Rectangle was the
    child of the Canvas. Apparently, the Rectangle needs to have a specific
    Width and Height specified - which prevents Stretch from working...
    aaaarrrggghhhh

    Any insights and comments welcome. I hope the above helps others..

    John - jpuopolo


      My System SpecsSystem Spec

  2. #2


    Douglas Stockwell Guest

    Re: Customer Control Lessons Leaned So Far...

    Hi John,

    Canvas is only used for absolute positioning, that is, where you specify
    Left, Top, Width and Height properties. Horizontal/VerticalAlignment are
    unused.

    I think you just need to explore the other subclasses of
    System.Windows.Controls.Panel, depending on how you want to lay out the
    elements, at least one of (or a combination of) Grid, StackPanel, WrapPanel,
    or DockPanel should suit your needs.

    - Doug




    "john" <puopolo@gmail.com> wrote in message
    news:1165160006.502441.322460@n67g2000cwd.googlegroups.com...
    > All:
    >
    > I have been developiing a simple (what I thought was simple) custom
    > control (derived from UserControl). The basic functionality is that of
    > a Jeopardy-style game square --- it should be a rounded rectangle that
    > is filled with a gradient brush that sizes itself to the grid cell
    > (parent) to which it is placed.
    >
    > What I have learned...
    >
    > * A UserControl can only have one child element. I originally used a
    > Rectangle, but then could not add the question/answer text (no way to
    > add a Label or TextBlock, etc.). Laurent Bugnion suggested using a
    > container for the single allowed child and add children this way. I
    > tried this and used a Canvas - it worked, somewhat...
    >
    > * I added 2 children to the Canvas -- a rectangle and a TextBlock.
    > Originally, the rectangle was marked as
    > Horizontal/VerticalAlignment="Stretch", with no specific Width and
    > Height specified. This worked when the Rectangle was the direct child
    > of the UserControl - but failed to display when the Rectangle was the
    > child of the Canvas. Apparently, the Rectangle needs to have a specific
    > Width and Height specified - which prevents Stretch from working...
    > aaaarrrggghhhh
    >
    > Any insights and comments welcome. I hope the above helps others..
    >
    > John - jpuopolo
    >



      My System SpecsSystem Spec

  3. #3


    john Guest

    Re: Customer Control Lessons Leaned So Far...

    Doug:

    Thanks for the advice -- a StackPanel seems to do the trick... My only
    challenge now is to figure out if it is possible to round the corners
    of the StackPanel -- will play around with various configurations and
    post the results.

    Best,
    John (jpuopolo)


    Douglas Stockwell wrote:
    > Hi John,
    >
    > Canvas is only used for absolute positioning, that is, where you specify
    > Left, Top, Width and Height properties. Horizontal/VerticalAlignment are
    > unused.
    >
    > I think you just need to explore the other subclasses of
    > System.Windows.Controls.Panel, depending on how you want to lay out the
    > elements, at least one of (or a combination of) Grid, StackPanel, WrapPanel,
    > or DockPanel should suit your needs.
    >
    > - Doug
    >
    >
    >
    >
    > "john" <puopolo@gmail.com> wrote in message
    > news:1165160006.502441.322460@n67g2000cwd.googlegroups.com...
    > > All:
    > >
    > > I have been developiing a simple (what I thought was simple) custom
    > > control (derived from UserControl). The basic functionality is that of
    > > a Jeopardy-style game square --- it should be a rounded rectangle that
    > > is filled with a gradient brush that sizes itself to the grid cell
    > > (parent) to which it is placed.
    > >
    > > What I have learned...
    > >
    > > * A UserControl can only have one child element. I originally used a
    > > Rectangle, but then could not add the question/answer text (no way to
    > > add a Label or TextBlock, etc.). Laurent Bugnion suggested using a
    > > container for the single allowed child and add children this way. I
    > > tried this and used a Canvas - it worked, somewhat...
    > >
    > > * I added 2 children to the Canvas -- a rectangle and a TextBlock.
    > > Originally, the rectangle was marked as
    > > Horizontal/VerticalAlignment="Stretch", with no specific Width and
    > > Height specified. This worked when the Rectangle was the direct child
    > > of the UserControl - but failed to display when the Rectangle was the
    > > child of the Canvas. Apparently, the Rectangle needs to have a specific
    > > Width and Height specified - which prevents Stretch from working...
    > > aaaarrrggghhhh
    > >
    > > Any insights and comments welcome. I hope the above helps others..
    > >
    > > John - jpuopolo
    > >



      My System SpecsSystem Spec

  4. #4


    Laurent Bugnion Guest

    Re: Customer Control Lessons Leaned So Far...

    Hi,

    john wrote:
    > Doug:
    >
    > Thanks for the advice -- a StackPanel seems to do the trick... My only
    > challenge now is to figure out if it is possible to round the corners
    > of the StackPanel -- will play around with various configurations and
    > post the results.
    >
    > Best,
    > John (jpuopolo)


    Sure, use a Border:

    <StackPanel>
    <Border CornerRadius="10" BorderBrush="Red" BorderThickness="5">
    <TextBlock Text="Hello" />
    </Border>
    </StackPanel>

    HTH,
    Laurent
    --
    Laurent Bugnion, GalaSoft
    Software engineering: http://www.galasoft-LB.ch
    PhotoAlbum: http://www.galasoft-LB.ch/pictures
    Support children in Calcutta: http://www.calcutta-espoir.ch

      My System SpecsSystem Spec


Customer Control Lessons Leaned So Far...
Similar Threads
Thread Forum
Five lessons from Microsoft on cloud security Vista News
Terminology lessons, please. Vista General
Vista RC1 & RC2 Lessons learned so far. (May help the newbies) Vista General
Vista's Lessons for Microsoft Vista General
A customer's opinion Vista General