yep, plugged it into a blank app, and been playing around with it.

Yes - the size of the control should be the max. Sorry - i omitted that
extra bit of info from the original post thinking it wouldnt be
relevant...The entire gauge control is to have a fixed height (say 400px).
This means there's 200px representing the positive scale and 200 for the
negative scale.

This control gets dropped onto View A which requires a range from 30 to -30.
1 increment on this control = 200px / 30 = 6.67px...if i increase 30 times,
the bar is filled up to  its top border. The same control is then dropped
onto view B which requires a range of -5 to 5. each increment is now 200px /
5 = 40px. It takes 5 clicks to fill the bar.

The scale transform requires an absolute size, doesnt it? how would you do
it using a scaletransform? we initially started with that but decided
against it because our code had to know the height of the control in order
to calculate the increment size...

thanks for your help :)

-x

ps I just realised i should mention that the maximum and minimum values are
equidistant (-30 to 30, -5 to 5, -14 to 14 etc etc), in case you were
wondering ;)





On Sat, Jul 3, 2010 at 9:00 PM, Chris Anderson <[email protected]>wrote:

> The increment size is determined by the height of the Rectangle.  In the
> example it had a height of 20px = 1 unit.  So yes, this is coded in the
> view.  But to me, that's where it belongs.  The bigger the range that is to
> be represented, the smaller the height you would give the Rectangle.  Are
> you saying that you want to treat whatever size the rectangle is as the
> maximum value it can display (100%), and then have it calculate the
> increments in between this?  You could do that too using a ScaleTransform.
>  I guess I'm a bit lost though as to the exact problem.  Based on your
> original problem description, the one in my example seemed to fit what you
> were after.  Did you give it a go?
>
> Chris
>
>
> On 3 July 2010 20:41, Xerxes Battiwalla <[email protected]> wrote:
>
>> Sure, but the problem here is that the proportion of each increment is a
>> fixed size, as coded in the view.
>>
>> we need to have a variable increment size depending on which view the
>> control is used in. in some views it might have a range of -30 to 30 and in
>> other views the range could be different yet again, changing the size of
>> each increment.
>>
>>
>> On Sat, Jul 3, 2010 at 2:30 PM, Chris Anderson 
>> <[email protected]>wrote:
>>
>>> Not at all.  Throw the following XAML on a view:
>>>
>>> <Rectangle Height="20" Width="50" Margin="118,130,0,0"
>>>
>>>
>>>
>>>
>>>
>>>             HorizontalAlignment="Left" VerticalAlignment="Top" >
>>>
>>>
>>>
>>>
>>>     <Rectangle.Fill>
>>>         <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
>>>
>>>
>>>
>>>
>>>             <GradientStop Color="#FF2B7911" Offset="0" />
>>>
>>>
>>>
>>>
>>>             <GradientStop Color="#FF56FF00" Offset="1" />
>>>
>>>
>>>
>>>
>>>         </LinearGradientBrush>
>>>     </Rectangle.Fill>
>>>
>>>
>>>
>>>
>>>     <Rectangle.RenderTransform>
>>>         <ScaleTransform ScaleY="1" CenterY="20" />
>>>
>>>
>>>
>>>
>>>     </Rectangle.RenderTransform>
>>> </Rectangle>
>>>
>>> You'll get a little bar indicating a value of 1.  Now change the ScaleY
>>> property of the transform to 6.  Then try changing it to -6.  Represents
>>> exactly what you are after.  Then you can bind the ScaleY property directly
>>> to your ViewModel property that exposes the value to display.
>>>
>>> Note: There is an artefact at the top and bottom of the rectangle that
>>> appears when it is scaled.  Maybe someone has an answer to prevent that?
>>>  I'm sure there's a way, just not off the top of my head.  This solution
>>> solves your primary problem however.
>>>
>>> Hope this helps.
>>>
>>> Chris
>>>
>>>
>>> On 3 July 2010 13:09, Xerxes Battiwalla <[email protected]> wrote:
>>>
>>>> Correct me if I'm wrong here, but that would then mean the vm has to
>>>> know the height of the control in order to set the correct proportion? 
>>>> Using
>>>> star values at least means the vm only has to know about ratios and
>>>> proportions, not absolute heights
>>>>
>>>> sent from my phone
>>>>
>>>> On 2 Jul 2010 08:49, "Chris Anderson" <[email protected]> wrote:
>>>> > I'd personally use a scale transform rather than star values. It would
>>>> > allow you to bind the ScaleY property to a view model property with
>>>> the
>>>> > value to display however, so no need for code-behind.
>>>> >
>>>> > Chris
>>>> >
>>>> >
>>>> > On 2 July 2010 08:38, Xerxes Battiwalla <[email protected]> wrote:
>>>> >
>>>> >> Hi everyone,
>>>> >>
>>>> >> This week we've needed to create a gauge control which is used to
>>>> indicate
>>>> >> positive values by filling a bar from the middle of the gauge upward,
>>>> and
>>>> >> negative values from the middle downward. A picture is worth a
>>>> thousand
>>>> >> words, so here's a QnD of what the control should do:
>>>> >> http://www.xerxesb.com/wp-content/uploads/2010/07/gauges.png
>>>> >>
>>>> >> The first gauge shows the control in its initial state. When the user
>>>> >> presses the up arrow, the control increases in single increments (as
>>>> in the
>>>> >> second gauge) and when they press down it goes in reverse (third
>>>> gauge)
>>>> >>
>>>> >> We managed to do it, but I wanted to canvas how everyone else would
>>>> >> implement the same control?
>>>> >>
>>>> >> Our implementation basically used a fill for the green bit, and
>>>> placed it
>>>> >> inside a grid with two rows (the grid was only half the size of the
>>>> whole
>>>> >> bar, and by default positioned to the entire height of the positive
>>>> side of
>>>> >> the gauge). The fill's size was set to take up the entire bottom row,
>>>> and we
>>>> >> then had some code in the code-behind to set the size of both rows
>>>> using
>>>> >> star values. If the value was negative we then apply a
>>>> RenderTransform to
>>>> >> flip the fill upside down. It works, but feels kludgy. Was hoping
>>>> there is a
>>>> >> XAML only way of doing something like this?
>>>> >>
>>>> >> Cheers,
>>>> >> Xerx
>>>> >>
>>>> >> _______________________________________________
>>>> >> ozwpf mailing list
>>>> >> [email protected]
>>>> >> http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
>>>> >>
>>>> >>
>>>>
>>>> _______________________________________________
>>>> ozwpf mailing list
>>>> [email protected]
>>>> http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
>>>>
>>>>
>>>
>>> _______________________________________________
>>> ozwpf mailing list
>>> [email protected]
>>> http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
>>>
>>>
>>
>> _______________________________________________
>> ozwpf mailing list
>> [email protected]
>> http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
>>
>>
>
> _______________________________________________
> ozwpf mailing list
> [email protected]
> http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf
>
>
_______________________________________________
ozwpf mailing list
[email protected]
http://prdlxvm0001.codify.net/mailman/listinfo/ozwpf

Reply via email to