Arun
Arun

Reputation: 3456

How to get a control in a listbox on code behind windows phone?

I have a listbox in my windows phone application. In the listbox DataTemplate I placed a button. How can I get the button object in codebehind. I am not getting the reference of the rowButton in the .cs file. I want to change the button background color of button of each row. how can I get the button reference in the code behind ?

I following code I used for listview.

<Grid  Height="530" Grid.Row="1" VerticalAlignment="Top" Margin="0,30,0,0">
            <ListBox Margin="0,0,0,0" Name="TransactionList">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Button  Width="460" Height="150" Click="user_click" Name="rowButton" >
                            <Button.Content>
                                <StackPanel Orientation="Horizontal" Height="auto" Width="400">
                                    <Image Width="80" Height="80" Source="{Binding Type}"></Image>
                                    <StackPanel Orientation="Vertical" Height="150" Margin="20,0,0,0">
                                        <StackPanel Orientation="Horizontal" Height="40">
                                            <TextBlock Width="100" FontSize="22" Text="Name :" Height="40" ></TextBlock>
                                            <TextBlock Width="auto" FontSize="22" Text="{Binding Name}" Height="40" ></TextBlock>
                                        </StackPanel>
                                        <StackPanel Orientation="Horizontal" Height="40">
                                            <TextBlock Width="100" FontSize="22" Text="Date :" Height="40" ></TextBlock>
                                            <TextBlock Width="100" FontSize="22" Text="{Binding Date}" Height="40" ></TextBlock>
                                        </StackPanel>
                                        <StackPanel Orientation="Horizontal" Height="40">
                                            <TextBlock Width="100" FontSize="22" Text="Amount :" Height="40" ></TextBlock>
                                            <TextBlock Width="auto" FontSize="22" Text="{Binding Amount}" Height="40" ></TextBlock>
                                            <TextBlock Width="auto" FontSize="22" Text=" $" Height="40" ></TextBlock>
                                        </StackPanel>
                                    </StackPanel>
                                </StackPanel>
                            </Button.Content>
                        </Button>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>

Upvotes: 0

Views: 535

Answers (2)

Milan Aggarwal
Milan Aggarwal

Reputation: 5104

If you want to change background on user click, in the click event handler use

            Button button1 = sender as Button;
            button1.Backgorund = new SolidColorBrush(Colors.Red);

to change the background color.

Else bind the background property for each button and change its value on iteration of the items in the listbox.

Upvotes: 2

Matt Lacey
Matt Lacey

Reputation: 65586

Without seeing how you've tried to access this is in code it's impossible to say why what you're doing isn't working.

However it'll be much easier if you use databinding to set the color of the templateitem

Upvotes: 0

Related Questions