lundi 21 octobre 2019

Set checkbox style template label programmaticaly WPF

I created a style for a checkbox in WPF and created an array of those checkboxes programmaticaly. The style is as follows

<Style x:Key="deviceZoom" TargetType="{x:Type CheckBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type CheckBox}">
                <DockPanel x:Name="dockPanel">
                    <Canvas Width="24.15" Height="23">
                        <Image Source="/Resources/Icons/deviceUnselectedDiscrete.png" x:Name="DeviceImage" Width="12" Height="19" Canvas.Top="4"/>
                        <Border x:Name="borderDevice"
                                        CornerRadius="5"
                                        Width="20"
                                        Height="10"
                                        Background="#222528"
                                        BorderThickness="0"
                                        Canvas.Top="1"
                                        Canvas.Left="4.15">
                            <TextBlock x:Name="numBoards"  HorizontalAlignment="Center" VerticalAlignment="Center" Padding=".1" FontSize="8" Foreground="White" Text="99"/>                                     
                        </Border>
                    </Canvas>
                </DockPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>    
</Style>

And then I create some checkboxes like so and add to the root canvas

    Style style = canvas.FindResource("deviceZoom") as Style;

    var deviceCheckbox = new CheckBox();
    canvas.Children.Add(deviceCheckbox);
    deviceCheckbox.Style = style;
    //Here I would like to set the label text

Now I would like to set from code behind a value to the label numBoards every time I have new data, but I don't know how. I tried using Dynamic Properties but didn't manage to set them well since the checkbox is created programmaticaly, and tried with binding but without success




Aucun commentaire:

Enregistrer un commentaire