[ crnjin @ 10.05.2011. 15:24 ] @
Imam Canvas unutar ListBoxa :

<ListBox Name="lstBox1" Height="250" Width="430" ScrollViewer.VerticalScrollBarVisibility="Visible">
<Canvas x:Name="canvaslst" HorizontalAlignment="Left" Height="550" Width="400"/>
</ListBox>

U canvaslst dinamicki ucitavam matricu dugmadi (Button) 17x30.

Kako mi je visina canvaslst-a veca od visine lstBox1 , pola te matrice mi se ne vidi.

Ako to sve uradim bez listboxa , samo na canvas-u , bude previse zbijeno i nepregledno ...

Neka pomoc ?? Nadam se da sam objasnio sta je problem...
[ Boris B. @ 11.05.2011. 09:35 ] @
Čemu ti uopšte služi taj ListBox? Nema smisla da imaš Canvas u Listbox-u. Napravi Canvas u ScrollVieweru (a ne u listboxu), pa dodaj dugmice na Canvas iz koda, kao što izgleda već sada radiš.

Bolje rešenje je da definišeš ItemTemplate za ListBox tako da ItemTemplate pravi dugmiće:
Code:

        <ListBox x:Name="ListaListBox">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Margin="3">
                        <Label Content="{Binding Caption}" />
                        <Button Content="{Binding Caption}" Click="Button_Click" Tag="{Binding}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

Code (csharp):

        public class ListItemModel
        {
            public string Caption { get; set; }
            public int SomeData { get; set; }
        }

        public void Init()
        {
            ...
            ListaListBox.ItemsSource = new List<ListItemModel> {new ListItemModel {Caption = "Test1", SomeData = 1}, new ListItemModel {Caption = "Test2", SomeData = 2}};
            ...
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(((sender as Button).Tag as ListItemModel).SomeData.ToString());
        }
 
[ crnjin @ 11.05.2011. 22:42 ] @
Mislim da me nisi razumeo ...

Samo mi je potreban scroll da proradi . Stavljao sam Canvas unutar taga za ScrollView ali nije hteo da se aktivira.

<ScrollViewer>
<Canvas x:Name="canvaslst" HorizontalAlignment="Left" Height="550" Width="450"/>
</ScrollViewer>

ali onda sam postavio visinu za taj ScrollView i sve je bilo ok :))) bas kako sam zeleo .

<ScrollViewer Height="250">
<Canvas x:Name="canvaslst" HorizontalAlignment="Left" Height="550" Width="450"/>
</ScrollViewer>

A ListBox sam probao jer ovo nije htelo da proradi , glupa logika al sta je tu je ...

Resio sam problem, ali naravno Hvala na odgovoru ...
[ Boris B. @ 12.05.2011. 09:42 ] @
Možda si rešio problem lokalno, ali i dalje mislim da ti pristup nije dobar. U WPF-u izbegavaj codebehind, pravi dugmiće pomoću itemtemplate-a i modela kao što sam ti prethodno pokazao. Posle možeš da menjaš dugmiće za nešto drugo ako hoćeš bez promene koda (imperativno), nego čisto iz XAML-a (deklarativno).