Xaml binding

Status
Niet open voor verdere reacties.

rambomambo

Gebruiker
Lid geworden
9 dec 2012
Berichten
163
Beste

ik probeer dus een wenslijst te maken nu werkt dit al redelijk goed
maar nu heb ik nog een paar kleine probleempjes

dus ik kan mijn wenslijst maken met naam omschrijving en hoeveel het kost daarrond word er dus een border getrokken

wenslijst.jpg

zoals dit dus maar nu heb ik in de xaml voor die border dus value 1 gebruikt voor die gele achtergrond met rode border
en voor value2 blauwe border met rode achtergrond

maar hoe kan ik dit oplossen in xaml bv dat het bedrag hoger is dan 200euro dan is het bv gele achtergrond met rode border
lager dan 200euro is het rode achtergrond met blauwe border

xaml
<Window x:Class="Takenlijst.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Takenlijst" Height="444.03" Width="525">
<Window.Resources>
<DataTemplate x:Key="TaakDataTemplate">
<Border Name="border" BorderBrush="Aqua" Background="Red" BorderThickness="1" Padding="5" Margin="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Taak :"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Benaming :"></TextBlock>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Bedrag"></TextBlock>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path= Benaming}"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path= Omschrijving}"></TextBlock>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path= Prioriteit}"></TextBlock>
</Grid>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Prioriteit}" Value="200" >
<Setter TargetName="border" Property="BorderBrush" Value="Red"></Setter>
<Setter TargetName="border" Property="Background" Value="Orange"></Setter>
</DataTrigger>
</DataTemplate.Triggers>

</DataTemplate>

</Window.Resources>
<StackPanel Orientation="Vertical" Margin="0,0,0,23">
<Label Content="Mijn Taken" Background="LightYellow" Margin="5"></Label>
<ListBox HorizontalContentAlignment="Stretch" Name="lstTaken" ItemTemplate="{StaticResource TaakDataTemplate}" Height="250" Width="300"></ListBox>
<StackPanel Orientation="Horizontal">
<Label Content="Naam"></Label>
<TextBox Name="tbNaam" Width="476" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Name="btnOmschrijving" Content="Omschrijving"/>
<TextBox Name="tbOmschrijving" Width="439" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Name="btnPrio" Content="Prijs"/>
<TextBox Name="tbPrio" Width="476" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button Name="btnNaam" Content="Voeg toe aan wenslijst" Click="is_clicked" Width="517"/>
</StackPanel>

</StackPanel>
</Window>

mainwindow
private void is_clicked(object sender, RoutedEventArgs e)
{
try
{
string Titel = Convert.ToString(tbNaam.Text);
string Omschrijving = Convert.ToString(tbOmschrijving.Text);
int prio = Convert.ToInt32(tbPrio.Text);
lstTaken.Items.Add(new Taak(Titel, Omschrijving, prio));
}
catch(Exception) {
MessageBox.Show("gelieve iets in te vullen");
}
}

klasse
public class Taak
{

private string benaming;
private string omschrijving;
private int bedrag;

public Taak(string taakbenaming, string taakomschrijving, int taakbedrag)
{
benaming = taakbenaming;
omschrijving = taakomschrijving;
bedrag = taakbedrag;
}


public string Benaming
{
get { return benaming; }
set { benaming = value; }
}
public string Omschrijving
{
get { return omschrijving; }
set { omschrijving = value; }
}
public int Prioriteit
{
get { return bedrag; }
set { bedrag = value; }
}
}
}
 
Laatst bewerkt:
Je kunt dit doen door bijvoorbeeld een ValueConverter te gebruiken samen met een waarde die je met binding aan je background koppelt.

Maak een class aan die de IValueConverter interface implementeerd (deze background color converter neemt je prioriteit waarde)
Code:
public class BackgroundColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (int)value >= 200 ? new SolidColorBrush(Colors.Green) : new SolidColorBrush(Colors.Red);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Maak deze aan in je app of window resources (local is hier de xmlnamespace)
Code:
<local:BackgroundColorConverter x:Key="BackgroundColorConverter"/>

En dan in je border bind je de background aan je prioriteit property met deze converter zoals hieronder (en even je data trigger weghalen denk ik)
Code:
Background="{Binding Prioriteit, Converter={StaticResource BackgroundColorConverter}}"

En dit doe je ook voor de border.


EN... gelieve als je antwoord krijgt op vragen even antwoorden (zie andere topics) al is het maar een 'bedankt het werkt' zodat de personen die je helpen/proberen te helpen ook weten waar ze aan toe zijn.
 
ja sry voor dat ik niet antwoordde op de berichten,maar zat met verschillende forums tegelijk aan het werken waardoor het heel onoverzichtelijk werd dus nu
ben ik alleen met helpmij.nl bezig dus zal vanaf nu beginnen antwoorden echt sry daarvoor

ja de oplossing dat jij gaf werkt blijkbaar niet in wpf kan dit ?
want ik krijg daar een foutmelding van dat het niet supported is voor WPF
het gaat hier over de backgroundcollorconverter

alvast bedankt
 
Het is juist voor speciaal voor xaml. Wat is de foutmelding die je nu krijgt?

(deze usings heb je nodig, mocht dat het zijn)
Code:
using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Media;
 
ja ik heb resolve gedaan op de woordjes in mijn klasse en dan heeft hij die 3 systems toegevoegd

Naamloos.png
en ditzijn de foutmeldingen en als ik die local zin uit mijn xaml verwijder zijn mijn fouten ook weg
 
Maak deze aan in je app of window resources (local is hier de xmlnamespace)
Code:
<local:BackgroundColorConverter x:Key="BackgroundColorConverter"/>


xmlns:local="clr-namespace:Takenlijst"

toevoegen bij de window namespaces
 
Heel erg bedankt

de fouten zijn weg maar de code werkt blijkbaar niet dus de standaard border werkt maar als ik mijn bedrag hoger maak dan 200 dan blijft het dezelfde kleur als kleiner dan 200
ik probeer een paar dingen aan te passen en kijk of ik het kan oplossen, of als er iemand een oplossing weet laat het maar weten
 
Het werkt (heb het zelf getest met de code die je in je eerste post had gezet) post je code nog maar eens nadat je wat dingen hebt aangepast dan vul ik het wel aan.
 
ok alvast bedankt

kan wel zijn dat ik iets fout doe ben nog maar beginnend programmeur

<Window x:Class="Takenlijst.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Takenlijst"
Title="Takenlijst" Height="444.03" Width="525">
<Window.Resources>
<local:BackgroundColorConverter x:Key="BackgroundColorConverter"/>
<DataTemplate x:Key="TaakDataTemplate">
<Border Name="border" BorderBrush="Aqua" Background="Red" BorderThickness="1" Padding="5" Margin="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Taak :"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Benaming :"></TextBlock>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Bedrag"></TextBlock>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path= Benaming}"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path= Omschrijving}"></TextBlock>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path= Prioriteit}"></TextBlock>
</Grid>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Prioriteit, Converter={StaticResource BackgroundColorConverter}}" >
<Setter TargetName="border" Property="BorderBrush" Value="Red"></Setter>
<Setter TargetName="border" Property="Background" Value="Orange"></Setter>
</DataTrigger>
</DataTemplate.Triggers>

</DataTemplate>

</Window.Resources>
<StackPanel Orientation="Vertical" Margin="0,0,0,23">
<Label Content="Mijn Taken" Background="LightYellow" Margin="5"></Label>
<ListBox HorizontalContentAlignment="Stretch" Name="lstTaken" ItemTemplate="{StaticResource TaakDataTemplate}" Height="250" Width="300"></ListBox>
<StackPanel Orientation="Horizontal">
<Label Content="Naam"></Label>
<TextBox Name="tbNaam" Width="476" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Name="btnOmschrijving" Content="Omschrijving"/>
<TextBox Name="tbOmschrijving" Width="439" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Name="btnPrio" Content="Prijs"/>
<TextBox Name="tbPrio" Width="476" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button Name="btnNaam" Content="Voeg toe aan wenslijst" Click="is_clicked" Width="517"/>
</StackPanel>

</StackPanel>
</Window>

mainwindow
private void is_clicked(object sender, RoutedEventArgs e)
{
try
{
string Titel = Convert.ToString(tbNaam.Text);
string Omschrijving = Convert.ToString(tbOmschrijving.Text);
int prio = Convert.ToInt32(tbPrio.Text);
lstTaken.Items.Add(new Taak(Titel, Omschrijving, prio));
}
catch(Exception) {
MessageBox.Show("gelieve iets in te vullen");
}

klasse taak
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Takenlijst
{
public class Taak
{

private string benaming;
private string omschrijving;
private int bedrag;

public Taak(string taakbenaming, string taakomschrijving, int taakbedrag)
{
benaming = taakbenaming;
omschrijving = taakomschrijving;
bedrag = taakbedrag;
}


public string Benaming
{
get { return benaming; }
set { benaming = value; }
}
public string Omschrijving
{
get { return omschrijving; }
set { omschrijving = value; }
}
public int Prioriteit
{
get { return bedrag; }
set { bedrag = value; }
}
}
}

klasse backgroundcollorconverter
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;

namespace Takenlijst
{
class BackgroundColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (int)value >= 200 ? new SolidColorBrush(Colors.Green) : new SolidColorBrush(Colors.Red);
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
 
de binding met de converter moet in de border zelf, niet in de trigger

dus ipv Background="Red" => Background="{Binding Prioriteit, Converter={StaticResource BackgroundColorConverter}}"

de triggers kun je gewoon weglaten dan


edit:
zo leer je meteen meer als beginnend als je zelf ook moet nadenken ;) en nu weet je wat er fout kan zijn de volgende keer als er iets niet werkt
 
Laatst bewerkt:
prima, xaml hangt samen met binding, en deze converters maken veel dingen een stuk makkelijker

ook zul je bijna nooit je controls meer een naam geven of manipuleren met de naam vanuit je code behind file zodra je het wat beter snapt

(zie ook dat andere topic voor controls een betere layout te geven)
 
ja ik had C# wat onder de knie maar plots met die binding begon het terug ingewikkeld te worden
 
ik heb eindelijk nog 1 vraag

ik wou dus mijn border van kleur veranderen maar krijg nu de melding dat hij die klasse niet wil resolven

dit is mijn code dat ik bijgetypt heb

klasse
class kader : IValueConverter
{

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (int)value >= 200 ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.Aqua);

}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

}

xaml
<Border Name="border" BorderThickness="5" Padding="5" Margin="5" CornerRadius="10"
Background="{Binding Path=Prioriteit, Converter={StaticResource BackgroundColorConverter}}"
BorderBrush="{Binding Path=Prioriteit, Converter={StaticResource kader}}" >
 
oeps was de local key vergeten te plaatsen ja ben nog maar een paar dagen bezig met Xaml en soms zie je echt kleine dingen over het hoofd

alvast bedankt
 
Zodra je de xaml basis snapt zul je er zeer fijn mee kunnen werken.

Je volgende stap kan zijn een lijst te maken met taken en deze te binden aan de listbox itemssource in plaats van ze direct aan de listbox.Items toe te voegen. ;)
 
ja is ook nog een stap maar heb eerst geprobeerd als ik bij bedrag een negatieve waarde invul dat er dan rond de textbox een rood kamer moet komen met een uitroepingsteken en als je over de textbox gaat dat hij zegt dat er geen negatief getal in die textbox kan

ik heb eerst met een turtorial alles overgetypt dit werkte perfect
maar als ik dit in mijn opgave wil doen dan werkt het dus niet

de code die ik hiervoor gebruikt heb is een klasse en xaml code

xaml

<Window x:Class="Takenlijst.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Takenlijst"
Title="Takenlijst" Height="444.03" Width="525">
<Window.Resources>
<local:BackgroundColorConverter x:Key="AchtergrondKleur"/>
<local:BorderBrushColorConverter x:Key="BorderKleur" />
<local:GetalValidatieRule x:Key="validatie"/>
<Style x:Key="textStyleTextBox" TargetType="TextBox">
<Setter Property="Foreground" Value="Green" />
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
<ControlTemplate x:Key="validationTemplate">
<DockPanel>
<TextBlock Foreground="Red" FontSize="20">!</TextBlock>
<AdornedElementPlaceholder></AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
<DataTemplate x:Key="TaakDataTemplate">
<Border Name="border" BorderThickness="5" Padding="5" Margin="5" CornerRadius="10"
Background="{Binding Path=Prioriteit, Converter={StaticResource AchtergrondKleur}}"
BorderBrush="{Binding Path=Prioriteit, Converter={StaticResource BorderKleur}}" >
<Grid>

<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Taak :"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Benaming :"></TextBlock>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Bedrag"></TextBlock>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path= Benaming}"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path= Omschrijving}"></TextBlock>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path= Prioriteit}"></TextBlock>
</Grid>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Prioriteit}" >
<Setter TargetName="border" Property="BorderBrush" Value="Red"></Setter>

</DataTrigger>
<DataTrigger Binding="{Binding Path=kader}">
<Setter TargetName="border" Property="Background" Value="Orange"></Setter>

</DataTrigger>
</DataTemplate.Triggers>

</DataTemplate>




</Window.Resources>
<StackPanel Orientation="Vertical" Margin="0,0,0,23">
<Label Content="Mijn Taken" Background="LightYellow" Margin="5"></Label>
<ListBox HorizontalContentAlignment="Stretch" Name="lstTaken" ItemTemplate="{StaticResource TaakDataTemplate}" Height="250" Width="300"></ListBox>
<StackPanel Orientation="Horizontal">
<Label Content="Naam"></Label>
<TextBox Name="tbNaam" Width="476" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Name="btnOmschrijving" Content="Omschrijving"/>
<TextBox Name="tbOmschrijving" Width="439" />
</StackPanel>
<StackPanel Orientation="Horizontal" Name="stack2">
<Label Name="btnPrio" Content="Prijs"/>
<TextBox Name="tbPrio" Width="476" Validation.ErrorTemplate="{StaticResource validationTemplate}" Style="{StaticResource textStyleTextBox}">
<TextBox.Text>
<Binding Path="Leeftijd" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:GetalValidatieRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>

</TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button Name="btnNaam" Content="Voeg toe aan wenslijst" Click="is_clicked" Width="517"/>
</StackPanel>

</StackPanel>
</Window>

klasse
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;

namespace Takenlijst
{

class GetalValidatieRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
int cijferwaarde;
try
{
cijferwaarde = int.Parse(value.ToString());
}
catch (FormatException)
{
return new ValidationResult(false, " Ingegeven waarde is geen integer");
}
if((cijferwaarde) < 0 || (cijferwaarde > 130))
{
return new ValidationResult(false, "geef een realistische leeftijd");
}
else
{
return ValidationResult.ValidResult;
}

}
}
}

klasse taak
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Takenlijst
{
public class Taak
{

private string benaming;
private string omschrijving;
private int bedrag;

public Taak(string taakbenaming, string taakomschrijving, int taakbedrag)
{
benaming = taakbenaming;
omschrijving = taakomschrijving;
bedrag = taakbedrag;
}


public string Benaming
{
get { return benaming; }
set { benaming = value; }
}
public string Omschrijving
{
get { return omschrijving; }
set { omschrijving = value; }
}
public int Prioriteit
{
get { return bedrag; }
set { bedrag = value; }
}
}
}

mainwindow
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Takenlijst
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

lstTaken.Items.Add(new Taak("Laptop", "Asus N61JQ", 200));
lstTaken.Items.Add(new Taak("Smartphone", "Xperia Z", 20));
lstTaken.Items.Add(new Taak("KeyBoard", "G19", 2000));

}

private void is_clicked(object sender, RoutedEventArgs e)
{
try
{
string Titel = Convert.ToString(tbNaam.Text);
string Omschrijving = Convert.ToString(tbOmschrijving.Text);
int prio = Convert.ToInt32(tbPrio.Text);
lstTaken.Items.Add(new Taak(Titel, Omschrijving, prio));
stack2.DataContext = new Taak(Titel,Omschrijving,prio);
}
catch(Exception) {
MessageBox.Show("gelieve iets in te vullen");
}
}
}
}

die stack2 staat voor de naam van mijn stackpanel waar die textbox in staat
het enige wat werkt is mijn groene letters dat in het tekstvak verschijnen

msch ben ik in een klasse vergeten te implementeren naar een andere klasse ofzo

alvast bedankt
 
Ik zie dat je een 'Leeftijd' binding hebt in je 3e textbox dit zat dus geen waarde kunnen ophalen want je hebt nergens een leeftijd property

(ook graag je code in code tags zetten ipv quotes, voor indentation)
 
beste

ik heb de opgave eens in een rar bestand gestopt
Bekijk bijlage Takenlijst.part02.rarBekijk bijlage Takenlijst.part03.rarBekijk bijlage Takenlijst.part01.rar
ik heb 2 wpfs foutopsporing en takenlijst

in foutopsporing heb ik het 100% overgedaan van een turtorial in die 2de textbox zou ik graag overdoen in mijn takenlijst
en ik probeerde dit dus na in mijn takenlijst met dezelfde klasse dus klasse
waar er leeftijden in staan het probleem is als ik de opgave test krijg ik dus geen foutmelding als ik bv letters of een negatief getal invul



het eindresultaat zou moeten zijn dat ik dus bij een negatieve waarde of een bedrag groter dan 1000euro hij bij het over de textbox gegaan word hij zegt dat het bedrag hoger moet zijn dan 0 en kleiner dan 1000 en dat hij het item ook niet toevoegt in mijn listbox
nu ben ik er ondertussen al in geslaagd om die foutmelding te krijgen maar weet niet of ik mijn string en int boven mijn mainwindow mag plaatsen




Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Takenlijst
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        int prio;
        string Titel;
        string Omschrijving;
        public MainWindow()
        {
            
            InitializeComponent();
           
            lstTaken.Items.Add(new Taak("Laptop", "Asus N61JQ", 200));
            lstTaken.Items.Add(new Taak("Smartphone", "Xperia Z", 20));
            lstTaken.Items.Add(new Taak("KeyBoard", "G19", 2000));
        
            
            stack2.DataContext = new Taak(Titel,Omschrijving,prio);
        }

        private void is_clicked(object sender, RoutedEventArgs e)
        {
           
            try
            {
                Titel = Convert.ToString(tbNaam.Text);
                 Omschrijving = Convert.ToString(tbOmschrijving.Text);
                 prio = Convert.ToInt32(tbPrio.Text);
                
                lstTaken.Items.Add(new Taak(Titel, Omschrijving, prio));
                
            }
            catch (OverflowException)
            {
                MessageBox.Show("Getal is te groot of te klein");
            }
            catch (FormatException)
            {
                MessageBox.Show("Geen letters enkel positieve cijfers");
            }
            
        }
    }
}


xaml
Code:
<Window x:Class="Takenlijst.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:Takenlijst"
        Title="Takenlijst" Height="444.03" Width="525">
    <Window.Resources>
        <local:BackgroundColorConverter x:Key="AchtergrondKleur"/>
        <local:BorderBrushColorConverter x:Key="BorderKleur" />
        <local:GetalValidatieRule x:Key="validatie"/>
        <Style x:Key="textStyleTextBox" TargetType="TextBox">
            <Setter Property="Foreground" Value="Green" />
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip"
                            Value="{Binding RelativeSource={RelativeSource Self},
                           Path=(Validation.Errors)[0].ErrorContent}" />
                </Trigger>
            </Style.Triggers>
        </Style>
        <ControlTemplate x:Key="validationTemplate">
            <DockPanel>
                <TextBlock Foreground="Red" FontSize="20">!</TextBlock>
                <AdornedElementPlaceholder></AdornedElementPlaceholder>
            </DockPanel>
        </ControlTemplate>
        <DataTemplate x:Key="TaakDataTemplate">
            <Border Name="border"  BorderThickness="5" Padding="5" Margin="5" CornerRadius="10"
                     Background="{Binding Path=Bedrag, Converter={StaticResource AchtergrondKleur}}"
                     BorderBrush="{Binding Path=Bedrag, Converter={StaticResource BorderKleur}}"            >
            <Grid>
            
                <Grid.RowDefinitions>
                    <RowDefinition></RowDefinition>
                    <RowDefinition></RowDefinition>
                    <RowDefinition></RowDefinition>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Row="0" Grid.Column="0" Text="Taak :"></TextBlock>
                <TextBlock Grid.Row="1" Grid.Column="0" Text="Benaming :"></TextBlock>
                <TextBlock Grid.Row="2" Grid.Column="0" Text="Bedrag"></TextBlock>
                <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path= Benaming}"></TextBlock>
                <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path= Omschrijving}"></TextBlock>
                <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path= Bedrag}"></TextBlock>
            </Grid>
            </Border>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=Bedrag}"   >
                    <Setter TargetName="border" Property="BorderBrush" Value="Red"></Setter>

                </DataTrigger>
                <DataTrigger Binding="{Binding Path=kader}">
                    <Setter TargetName="border" Property="Background" Value="Orange"></Setter>
                    
                </DataTrigger>
            </DataTemplate.Triggers>

        </DataTemplate>
        
        
        
        
    </Window.Resources>
    <StackPanel Orientation="Vertical" Margin="0,0,0,23">
        <Label Content="Mijn Taken" Background="LightYellow" Margin="5"></Label>
        <ListBox HorizontalContentAlignment="Stretch" Name="lstTaken" ItemTemplate="{StaticResource TaakDataTemplate}" Height="250" Width="300"></ListBox>
        <StackPanel Orientation="Horizontal">
            <Label Content="Naam"></Label>
            <TextBox Name="tbNaam" Width="476" />
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Label Name="btnOmschrijving" Content="Omschrijving"/>
            <TextBox Name="tbOmschrijving" Width="439" />
        </StackPanel>
        <StackPanel Orientation="Horizontal" Name="stack2">
            <Label Name="btnPrio" Content="Prijs"/>
            <TextBox Name="tbPrio" Width="476" Validation.ErrorTemplate="{StaticResource validationTemplate}" Style="{StaticResource textStyleTextBox}">
             <TextBox.Text>
                <Binding Path="Bedrag" UpdateSourceTrigger="PropertyChanged">
                    <Binding.ValidationRules>
                        <local:GetalValidatieRule/>
                    </Binding.ValidationRules>
                </Binding>
                </TextBox.Text>

            </TextBox>
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Button Name="btnNaam" Content="Voeg toe aan wenslijst" Click="is_clicked" Width="517"/>
        </StackPanel>

    </StackPanel>
</Window>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan