WPF - kan ikke opdatere indhold i mainwindow
HejJeg skal lære WPF, og trods diverse google søgninger og bøger render jeg hovedet mod muren.
Jeg kører visual studio 2017.
Jeg har en yatzygame klasse som dll, den del fungerer fint - og der er da hul igennem til min WPFYatzy applikation.
i første omgang bruger jeg GameName og GameType properties fra min yatzy klasse + metode til at vælge næste GampeType fra en enum:
thisYatzy.GameStatus = thisYatzy.GameStatus.NextAround();
Når jeg starter det hele op, ser det korrekt ud
Mit problem er når diverse properties ændres i mit yatzy objekt, hvordan kommer den opdaterede værdi på skærmen?
<b>mainwindow.xaml</b>
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFYatzy"
xmlns:YatzyGameCL="clr-namespace:YatzyGameCL;assembly=YatzyGameCL" xmlns:Properties="clr-namespace:WPFYatzy.Properties" x:Class="WPFYatzy.MainWindow"
mc:Ignorable="d"
Title="Yatzy" Height="450" Width="800">
<Window.Resources>
<ObjectDataProvider x:Key="myDataSource" ObjectType="{x:Type YatzyGameCL:YatzyGame}">
</ObjectDataProvider>
</Window.Resources>
<Grid>
<Button x:Name="btnAddDice" Content="Skift status" HorizontalAlignment="Left" Margin="127,251,0,0" VerticalAlignment="Top" Width="135" Click="Button_Click" Height="67">
</Button>
<StackPanel HorizontalAlignment="Left" Height="145" Margin="68,56,0,0" VerticalAlignment="Top" Width="334">
<Label>Game status:</Label>
<TextBlock x:Name="txtboxGameStatus" Text="{Binding Source={StaticResource myDataSource}, Path=GameStatus}"/>
<Label Content="Game name:"/>
<TextBlock x:Name="txtboxGameName" Text="{Binding Source={StaticResource myDataSource}, Path=GameName}"/>
</StackPanel>
</Grid>
</Window>
<b>mainwindow.xaml.cs</b>
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;
using YatzyGameCL;
namespace WPFYatzy
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
thisYatzy = new YatzyGame();
this.DataContext = thisYatzy;
}
public YatzyGame thisYatzy;
private void OnInit(object sender, EventArgs e)
{
}
private void Button_Click(object sender, RoutedEventArgs e)
{
thisYatzy.GameDiceCup.AddNewDice(5);
//txtboxGameStatus.DataContext = thisYatzy.GameDiceCup.NumberOfDices;
thisYatzy.GameStatus = thisYatzy.GameStatus.NextAround();
//txtboxGameStatus.DataContext = thisYatzy;
txtboxGameStatus.ContentStart = thisYatzy.GameStatus;
//myListBox.DataContext = myDataSet;
}
}
}
Håber at I kan hjælpe :-)
Hilsen Thomas