2013-07-17 1 views
0

J'ai une liste ObservableCollection qui reçoit des données de la base de données, et je mets ces données dans ma grille, par liaison de données. Donc, j'ai un contrôle utilisateur qui apparaît lorsque je clique sur un élément de cette grille. Je veux qu'une zone de texte de mon contrôle utilisateur, montre l'élément sélectionné de ma grille. J'ai essayé cela en utilisant la liaison de données, mais la zone de texte ne montre pas l'élément sélectionné .. est-ce possible?C# DataBinding dans le contrôle utilisateur Win8

code de réseau:

<FlexGrid:C1FlexGrid 

     x:Name="grid" ItemsSource="{Binding list3, Mode=TwoWay}" 
     AutoGenerateColumns="False" 
     HorizontalAlignment="Left" Height="431" Margin="10,147,0,0" VerticalAlignment="Top" Width="1152" SelectionMode="Row" KeepCurrentVisible="True" Tapped="grid_Tapped" > 
     <FlexGrid:C1FlexGrid.DataContext> 
      <local:Controller/> 
     </FlexGrid:C1FlexGrid.DataContext> 

     <FlexGrid:C1FlexGrid.Columns> 
      <FlexGrid:Column Binding="{Binding describe}" Header="Describes" Width="800" /> 
      <FlexGrid:Column Binding="{Binding describeNote}" Header="Describes Notes" Width="300" /> 
     </FlexGrid:C1FlexGrid.Columns> 

    </FlexGrid:C1FlexGrid> 

code de commande de l'utilisateur:

<UserControl 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:Binding" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:FlexGrid="using:C1.Xaml.FlexGrid" 
x:Class="Binding.popNotas" 
mc:Ignorable="d" Height="281.925" Width="656.03"> 

<Grid> 
    <TextBox x:Name="txt2" Text="{Binding SelectedItem.describe, ElementName=grid, Mode=TwoWay}" Height="38" Margin="140,5,141,0" TextWrapping="Wrap" VerticalAlignment="Top"> 

    </TextBox> 

</Grid> 

Code cs

public class Controller : Common.BindableBase 
{ 
    //DAOS  
    public TesteDao dao { get; set; } 


    private ObservableCollection<ClPasso> _list3 = new ObservableCollection<ClPasso>(); 
    public ObservableCollection<ClPasso> list3 
    { 
     get { return _list3; } 
     set { this.SetProperty(ref this._list3, value); } 
    } 


    public Controller() 
    { 
     OnNavigatedTo(); 

    } 
    protected async void OnNavigatedTo() 
    { 
     await InitializeDatabase(); 
     list3 = await createlist3(); 
    } 

    private async Task InitializeDatabase() 
    { 
     string datbasePath = Windows.Storage.ApplicationData.Current.LocalFolder.Path + "\\bd_example.db"; 
     DataBase database = new DataBase (datbasePath); 
     await database.initialize(); 
     dao = new TesteDao(database); 

    } 


    public async Task<ObservableCollection<ClPasso>> createlist3() 
    { 
     return await dao.joinListAsync(123, "924be4cc-16db-40c2-b342-d6c1fccbec86"); 
    } 

    } 

Aide!

Merci !!!

+0

Pouvez-vous s'il vous plaît ajouter le code .cs? –

+0

Désolé, oui! J'ai ajouté, merci! – AmorimRob

Répondre

0

j'ai résolu ma question ..

, je créé un DependencyProperty sur le code derrière de mon contrôle de l'utilisateur, la sélection du nom, et je mettre cela dans le texte de ma zone de texte .. après, où je en utilisant mon contrôle utilisateur, dans ma page principale, je suis passé la valeur pour porperty ..

Comme ceci:

user Control

public sealed partial class UCNotes : UserControl 
{ 


    public string selection 
    { 
     get { return (string)GetValue(selectionProperty); } 
     set { SetValue(selectionProperty, value); } 
    } 

    public static readonly DependencyProperty selecionadoProperty = 
     DependencyProperty.Register("selection", typeof(string), typeof(UCNotes), new PropertyMetadata(null)); 

contrôle de l'utilisateur XAML

<UserControl 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:Test" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:FlexGrid="using:C1.Xaml.FlexGrid" 
x:Class="Fiscalizacao.UCNotes" 
mc:Ignorable="d" 
d:DesignHeight="327.068" Width="799.248"> 

<Grid Margin="10,0,10,10" Background="#FFB2B2B2" Height="303" VerticalAlignment="Bottom"> 
    <TextBox x:Name="txtSelection" Text="{Binding selection}" Height="38" Margin="153,75,153,0" TextWrapping="Wrap" VerticalAlignment="Top" BorderBrush="Black"/> 

Page principale XAML

<FlexGrid:C1FlexGrid 
      x:Name="questionsGrid" 
      HorizontalAlignment="Left" Height="417" Margin="31,181,0,0" VerticalAlignment="Top" Width="1306" 
      AutoGenerateColumns="False" KeepCurrentVisible="True" 
      SelectionMode="Row" ItemsSource="{Binding list, Mode=TwoWay}"> 
      <FlexGrid:C1FlexGrid.Columns> 
       <FlexGrid:Column Binding="{Binding describes}" Header="Descrição" Width="900" /> 
       <FlexGrid:Column Binding="{Binding descibesNotes}" Header="Nota" Width="*" /> 
      </FlexGrid:C1FlexGrid.Columns> 
     </FlexGrid:C1FlexGrid> 

     <Popup x:Name="popNotes" IsLightDismissEnabled="True" IsOpen="False" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" Margin="0,0,700,300" > 
      <local:UCNotes selection="{Binding SelectedItem.describes, ElementName=questionsGrid" /> 

     </Popup> 
Questions connexes