CheckBox Binding MvvM Caliburn
Bonjour à vous :)
Je viens vers vous pour un problème que je n'arrive pas résoudre mais je ne comprend pas vraiment aussi.
Je réalise une application Windows 8 en c# basé sur une architecture MVVM avec le Framework Caliburn.Micro
Mon problème est simple : Faire un Binding sur une CheckBox ( je sais le faire mais pour mon cas cela ne marche pas )
J'utilise un FlipView avec un DataTemplate a l'intérieur
une ListView qui a lui aussi un DataTemplate qui contient mais CheckBox.
Je n'arrive pas a atteindre mon binding de la propriété Ischeck de ma CheckBox.
Ma premier hypothèse est que j'utilise un datatemple dans un datatemple et qu'il n'arrive pas a trouve la source ?
Bon voici un bout de code pour y voir mieux.
ps : Un trie a était réaliser pour une meilleur compréhension du code.
VIEW
Code:
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
<Page
x:Class="eLOG.Views.FicheTestView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:eLOG.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:cal="http://www.caliburnproject.org"
mc:Ignorable="d" Background="Black">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" >
<TextBlock Text="{Binding Title}"/>
<Button Style="{StaticResource NavigationBackButtonNormalStyle}" Margin="39,59,39,0"/>
</Grid>
<FlipView ItemsSource="{Binding TitreFiche}">
<FlipView.ItemTemplate>
<DataTemplate>
<Grid Width="1247" HorizontalAlignment="Left" VerticalAlignment="Top">
<Grid>
<ListView IsItemClickEnabled="True"
ItemsSource="{Binding FicheTest}"
Grid.RowSpan="2">
<ListView.ItemTemplate>
<DataTemplate>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="76*"/>
<RowDefinition Height="73*"/>
<RowDefinition Height="2*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="132*"/>
<ColumnDefinition Width="644*"/>
<ColumnDefinition Width="27*"/>
<ColumnDefinition Width="289*"/>
</Grid.ColumnDefinitions>
<TextBox BorderBrush="Transparent" Foreground="White" Background="Transparent" Text="{Binding ActionFT}" Grid.Column="1" TextWrapping="Wrap" Margin="101,-5,-2,-7" FontFamily="Segoe UI Light" FontSize="20" />
<TextBox BorderBrush="Transparent" Foreground="White" Background="Transparent" Text="{Binding Attendu}" Grid.Column="1" TextWrapping="Wrap" FontFamily="Segoe UI Light" Margin="154,5,0,1" FontSize="20" Grid.Row="1"/>
<Line Grid.Column="1" Grid.Row="2" Canvas.ZIndex="1" StrokeThickness="5" Stroke="White" X1="1000" Margin="106,2,34,-1" VerticalAlignment="Top" Height="1" />
<Grid x:Name="azerty" Grid.Column="3" HorizontalAlignment="Left" Height="44" Margin="139,32,-37,0" VerticalAlignment="Top" Width="177">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<CheckBox IsChecked="{Binding CheckBoxGreen, Mode=TwoWay}" Visibility="{Binding VisibilityCheckBoxGreen}" Style="{StaticResource CheckBoxStyleGreen}"/>
</Grid>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Grid>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
</Grid>
</Page> |
ViewModel
Code:
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
using Caliburn.Micro;
using eLOG.Data;
using eLOG.DataModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml.Controls;
namespace eLOG.ViewModels
{
public class FicheTestViewModel : ViewModelBase
{
private readonly INavigationService navigationService;
private List<FicheTest> FicheTest;
private FakeBDD BDD;
private int i;
private int y ;
public FicheTestViewModel(INavigationService navigationService)
: base(navigationService)
{
this.navigationService = navigationService;
BDD = new FakeBDD();
FicheTest = new List<FicheTest>();
FicheTest = BDD.creatObject();
_title = "Trololololo";
var FTByTitre = FicheTest.GroupBy(x => x.Titre)
.Select(x => new TitreFicheTest { Titre = x.Key, FicheTest = x.ToList() });
_TitreFiche = FTByTitre.ToList();
}
protected override void OnInitialize()
{
base.OnInitialize();
}
private bool _CheckBoxGreen;
public bool CheckBoxGreen
{
get { return _CheckBoxGreen; }
set
{
_CheckBoxGreen = value;
NotifyOfPropertyChange(() => CheckBoxGreen);
}
}
private List<TitreFicheTest> _TitreFiche;
public List<TitreFicheTest> TitreFiche
{
get { return _TitreFiche; }
set
{
_TitreFiche = value;
NotifyOfPropertyChange(() => TitreFiche);
}
}
}
} |
[/CODE]