none
¿ Se pueden añadir estilos dinamicos a un control personalizado ? RRS feed

  • Pregunta

  • Buenas compañeros, les traigo un problemilla o una duda que tengo queno soy capaz de resolver. Tengo un control personalizado que es una lista de RadioButton de la siguiente forma.

    <ListBox x:Class="ControlesPersonalizados.RadioListBox"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:s="clr-namespace:System;assembly=mscorlib" >
    
        <ListBox.Resources>
            <Style x:Key="{x:Type ListBoxItem}" TargetType="ListBoxItem">
                <Setter Property="SnapsToDevicePixels" Value="true"/>
                <Setter Property="OverridesDefaultStyle" Value="true"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListBoxItem">
                            <RadioButton x:Name="radio" Click="ItemRadioClick" Height="30"
                                Style="{DynamicResource buttonstripe3}" 
                                GroupName="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Name}" >
                                <RadioButton.Content>
                                    <ContentPresenter 
                                        Content="{TemplateBinding ContentControl.Content}" 
                                        ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" 
                                        ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" 
                                        HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" 
                                        VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" 
                                        SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                                </RadioButton.Content>
                            </RadioButton>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListBox.Resources>
    
        <ListBox.Template>
            <ControlTemplate>
                <Border BorderThickness="0" 
                    Padding="1,1,1,1" 
                    Background="Transparent" 
                    Name="theBorder" 
                    SnapsToDevicePixels="True">
                    <ScrollViewer Padding="{TemplateBinding Control.Padding}" Focusable="False">
                        <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                    </ScrollViewer>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="ItemsControl.IsGrouping" Value="True">
                        <Setter Property="ScrollViewer.CanContentScroll" Value="False" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </ListBox.Template>
    </ListBox>


    El caso es que me gustaria poder cambiar el estilo de los radiobuttons cada vez que utilice el control en el programa princial, es decir ahora lo uso de esta forma:

    <Personal:RadioListBox x:Name="Archivos_RadioList"
                Width="463" Height="72" Margin="96,16,0,0"
                HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Row="10" />
    
    

    El caso es que si en el control añado un estilo, este solo me valdra dentro del proyecto, lo que quiero es poder indicar desde este codigo  el estilo que van a tomar los radioButton, lo he hecho de la siguiente forma, pero me da un error diciendo que ese estilo no es de Radio sino de List.

    Personal:RadioListBox x:Name="Plantillas_RadioList" Style="{DynamicResource buttonstripe3}"
                SelectionChanged="SeleccionarPlantilla"
                Margin="703,0,38,22" Grid.Row="6" Grid.RowSpan="4" 
                HorizontalAlignment="Left" VerticalAlignment="Top" />

    ¿ Alguna sugerencia para poder acceder a dar estilo a los RadioButton del ListBox ?

    Tambien me gustaria poder editar desde este objeto "Personal el Height del RadioButton que ahora esta "a capon" en la definicion del control". ¿ se podria tambien hacer esto ?

    Muchas gracias por su ayuda


    • Editado Veleras martes, 14 de abril de 2015 9:25 Ampliacion de datos
    martes, 14 de abril de 2015 9:15