Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Windows 8/XAML] gridview en datatemplate

Pagina: 1
Acties:

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 19-11 21:48
Ik heb een gridview met een verwijzing naar een datatemplate. In de datatemplate zitten een aantal textblocken die met 'binding' worden voorzien van tekst. De gridview kan ik 'vullen' door gridview.ItemsSource te gebruiken, waarbij keurig de textblocken worden voorzien van tekst.

Nu wil ik een item toevoegen aan de gridview die ook gebruik maakt van de datatemplate. Dit lukt wel, maar ik krijg met geen mogelijkheid de 'binding' van de textblocken voor elkaar...

Het lukt me alleen als ik compleet een nieuwe ItemsSource toeken, maar dat is veel te omslachtig en te kostbaar.

Hoe kan ik een datatemplate-item toevoegen aan een gridview met databinding in de datatemplate?

Ik voeg een nieuw item toe met:
Visual Basic .NET:
1
gridview.Items.Add(Object)

En 'Object' is nu een willekeurig object, maar ik vermoed dat het object een structuur moet hebben als:

"key","string"

maar wat voor object dat kan zijn weet ik niet...

edit:

Mijn gridview:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<GridView Name="grdvwCounters" Grid.Row="1" SelectionMode="None" IsItemClickEnabled="false" VerticalAlignment="Center" Margin="0,0,0,0" HorizontalAlignment="Center">
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid Margin="10" Width="260" Height="384" >
                <Rectangle HorizontalAlignment="Center" Height="384" Stroke="#FFF0F0F0" VerticalAlignment="Center" Width="260" StrokeThickness="5" RadiusX="10" RadiusY="10"/>
                <Rectangle HorizontalAlignment="Center" Height="53" Margin="0,12,0,0" Stroke="#FFF0F0F0" VerticalAlignment="Top" Width="236" StrokeThickness="5" RadiusX="7" RadiusY="10" />
                <StackPanel Orientation="Horizontal" Margin="25,12,0,0">
                    <TextBlock x:Uid="/Resources/Counter1" HorizontalAlignment="Left"  TextWrapping="Wrap" VerticalAlignment="Top" FontSize="36"/>
                    <TextBlock HorizontalAlignment="Left" Margin="16,0,0,0" TextWrapping="Wrap" Text="{Binding CounterNumber}" VerticalAlignment="Top" FontSize="36"/>
                </StackPanel>
                <Button Content="X" HorizontalAlignment="Left" Height="39" Margin="200,19,0,0" VerticalAlignment="Top" Width="39" Padding="1,-12,0,0" FontSize="36" Click="bttnClose"/>
                <Rectangle HorizontalAlignment="Center" Height="93" Margin="0,72,0,0" Stroke="#FFF0F0F0" VerticalAlignment="Top" Width="236" StrokeThickness="5" RadiusX="7" RadiusY="10" />
                <TextBox x:Name="txtbxCounterNumber" HorizontalAlignment="Center" Margin="0,84,0,0" Text="0" VerticalAlignment="Top" FontFamily="Segoe UI" FontSize="48" Height="60" InputScope="Number" Background="{x:Null}" Foreground="#FFE4555C" BorderBrush="{x:Null}" BorderThickness="0" Padding="0" UseLayoutRounding="True" MinWidth="26" MinHeight="32" MaxLength="7" KeyDown="txtbxCounterNumber" />
                <Grid Margin="0,172,0,0" Height="200" Width="236" HorizontalAlignment="Center" VerticalAlignment="Top" PointerReleased="grdCounterUpDown">
                    <Rectangle HorizontalAlignment="Center" Height="200"  Stroke="#FFF0F0F0" VerticalAlignment="Center" Width="236" StrokeThickness="5" RadiusX="7" RadiusY="10" Fill="#FF7C2727"/>
                    <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                        <TextBlock  x:Uid="/Resources/Count" HorizontalAlignment="Center" Margin="0" TextWrapping="Wrap"  FontSize="48" FontFamily="Segoe UI" FontWeight="Bold"/>
                        <TextBlock  Text="{Binding UpDown}" HorizontalAlignment="Center" Margin="0" TextWrapping="Wrap" FontSize="48" FontFamily="Segoe UI" FontWeight="Bold"/>
                    </StackPanel>
                </Grid>
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

[ Voor 73% gewijzigd door Swerfer op 04-11-2012 00:04 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Ik zit er niet heel erg meer in maar is het niet zo dat als de collectie waar je aan bind IObservable implementeert dat je dan gewoon een item aan de collectie kan toevoegen?

Systeem | Strava


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 19-11 21:48
Brakkie schreef op zaterdag 03 november 2012 @ 23:59:
Ik zit er niet heel erg meer in maar is het niet zo dat als de collectie waar je aan bind IObservable implementeert dat je dan gewoon een item aan de collectie kan toevoegen?
Ik heb wat gezocht met Google en heb onderstaande code toegevoegd:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Public Class NameList
    Inherits ObservableCollection(Of Counter)

    ' Methods 
    Public Sub New(CounterNumber As String, UpDown As String)
        MyBase.Add(New Counter(CounterNumber, UpDown))
    End Sub

End Class

Public Class Counter
    Private _CounterNumber As String
    Private _UpDown As String

    Public Property CounterNumber() As String
        Get
            Return _CounterNumber
        End Get

        Set(ByVal value As String)
            _CounterNumber = value
        End Set
    End Property

    Public Property UpDown() As String
        Get
            Return _UpDown
        End Get

        Set(ByVal value As String)
            _UpDown = value
        End Set
    End Property

    Public Sub New(ByVal CounterNumber As String, ByVal UpDown As String)
        _CounterNumber = CounterNumber
        _UpDown = UpDown
    End Sub

End Class

De code hieronder geeft resultaat:
Visual Basic .NET:
1
2
Dim namelist As NameList = New NameList("1", "UP")
grdvwCounters.ItemsSource = namelist

Echter nog steeds geen resultaat als ik het volgende doe:
Visual Basic .NET:
1
2
Dim namelist As NameList = New NameList("1", "UP")
grdvwCounters.Items.Add(namelist)

Dat laatste is dus het probleem, hoe voeg ik een item toe?

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 19-11 21:48
Niemand een tip?

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • Down
  • Registratie: Februari 2005
  • Laatst online: 23-11 13:28
Voeg je nou de gehele list toe als item aan de Items property? Dat lijkt me niet juist.

Het bovenste stukje code is in principe goed. Maar nadat je de ItemsSource heb geset, kun je je gewoon items toevoegen aan de namelist zelf? Dat doe je nergens?

Mother north, how can they sleep while their beds are burning?


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 19-11 21:48
Visual Basic .NET:
1
grdvwCounters.Items.Add(New Counter("1", "UP"))

En Public Class NameList kon komen te vervallen...

Dit was hem. @Down: Bedankt dat je mij de juiste richting hebt opgestuurd...

[ Voor 14% gewijzigd door Swerfer op 04-11-2012 11:55 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com

Pagina: 1