• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 927
  • Last Modified:

Dynamic calculating constants in a Resource Dictionary

Have this Xaml constant (XamlConstants.cs) and it dynamicaly creates other constants from other values:
        #region Fields
        const double ADJUSTMENT = -1;
        const double COL_DELTA = 190;
        const double LBL_TXT_DELTA = 75;
        const double ROW_DELTA = 30;
        const double TXT_CHK_DELTA = 3;
        const double TXT_ROW1 = 2;
        #endregion

        #region Public Constants
        public const double BTN_HEIGHT = 23;
        public const double BTN_WIDTH = 75;
        public const double LBL_HEIGHT = 28;
        public const double LBL_WIDTH = 54;
        public const double LBL_WIDTH_X2 = LBL_WIDTH * 2;
                    :
        public const double ROW_HEIGHT = ROW_DELTA - 1;
        public const double ROW_HEIGHT_X2 = (ROW_DELTA * 2) + ADJUSTMENT;
                    :
        public const double ROW_HEIGHT_X5 = (ROW_DELTA * 5) + ADJUSTMENT;
        public const double TXT_HEIGHT = 21;
        public const double TXT_WIDTH = 90;
        public const double TXT_WIDTH_SMALL = TXT_WIDTH / 2;
        public const double TXT_WIDTH_TINY = TXT_WIDTH_SMALL / 2;
                     :
        public const double TXT_WIDTH_X4 = TXT_WIDTH * 4;
        #endregion

I want to move this to a Resource Dictionary

I'm able to do this:
    <!--    Labels      -->
    <Style TargetType="Label" x:Key="lblBase">
        <Setter Property="Height" Value="28" />
    </Style>
    <Style TargetType="Label"     x:Key="lblStd">
        <Setter Property="Height" Value="{DynamicResource lblBase.Height}" />
        <Setter Property="Width"  Value="54" />
    </Style>
    <Style TargetType="Label"     x:Key="lblStd_X2">
        <Setter Property="Height" Value="{DynamicResource lblBase.Height}" />
        <Setter Property="Width"  Value="108" />

But I want the width of lblStd_X2 to be represented as something like lblStd.Width*2 - How do I do that?

Thanks
0
Marvin_Rowe
Asked:
Marvin_Rowe
1 Solution
 
adler77Commented:
I know there are more options with WPF, but I am more familiar with the SL side (which should also work in WPF). I haven't tried it, since SL doesn't support DynamicResource, but could you do a value converter (http://www.jeff.wilcox.name/2008/07/13/visibility-type-converter/)?

Similar to the example I linked to, except your value would be "{DynamicResource lblStd.Width, Converter={StaticResource WidthDoubler}}" and then the VisibilityConverter would be set up the same (named WidthDoubler) except Convert would look like the code below:
public object Convert(   
        object value,   
        Type targetType,   
        object parameter,   
        CultureInfo culture)   
    {   
        double stdwidth = (double)value;   
        return stdwidth * 2;   
    }   

Open in new window

0
 
Marvin_RoweAuthor Commented:
Help me understand how this solution is different from using Xaml constants (above), which I was able to do but wanted to move the logic from a Xaml constant to a Resource Dictionary.
0

Featured Post

Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now