Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

WPF UserControl che espone componente

$
0
0

Sale a tutti, volevo chiedere delle informazioni su un'operazione che non riesco a risolvere

Mi spiego:

In un software che sto sviluppando utilizzo spesso la datagrid e abbinata ad essa inserisco sempre 3 pulsanti che eseguono del codice.

Per non dover sempre scrivere il tutto ogni volta che inserisco questo controllo ho pensato di creare una mia UserControl. Perciò ho creato la mia Libreria di Controlli Utente per WPF ed ho creato il mio UserControl 

Questo è il codice XAML:

<UserControl             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"              xmlns:local="clr-namespace:MyControl"             xmlns:igDP="http://infragistics.com/DataPresenter" x:Class="MyPersonalControl"             mc:Ignorable="d"              d:DesignHeight="300" d:DesignWidth="300">    <Grid>        <Grid.RowDefinitions>            <RowDefinition Height="40"/>            <RowDefinition Height="21*"/>        Grid.RowDefinitions>        <Button x:Name="btn_Open" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="32" Height="32" ToolTip="Apri configurazione griglia" Click="btn_Open_Click">            <Image Source="Images/open.png" ToolTip="Apri configurazione griglia"/>        Button>        <Button x:Name="btn_Save" HorizontalAlignment="Left" Margin="50,10,0,0" VerticalAlignment="Top" Width="32" Height="32" ToolTip="Salva configurazione griglia" Click="btn_Save_Click" >            <Image  Source="Images/save.png" ToolTip="Salva configurazione griglia" />        Button>        <Button x:Name="btn_ExportExcel" HorizontalAlignment="Left" Margin="90,10,0,0" VerticalAlignment="Top" Width="32" Height="32" ToolTip="Esporta griglia in formato Excel" Click="btn_ExportExcel_Click">            <Image  Source="Images/excel.png" ToolTip="Esporta griglia in formato Excel" />        Button>        <igDP:XamDataGrid x:Name="MyGrid" HorizontalAlignment="Stretch" Height="Auto" Margin="0" Grid.Row="1" VerticalAlignment="Stretch" Width="Auto"/>    Grid>UserControl>

Questo è il codice vb:

Imports System.IOImports System.ReflectionImports System.TextImports Infragistics.Windows.DataPresenter.ExcelExporterPublic Class MyPersonalControl    Inherits System.Windows.Controls.UserControl    Public Shared ReadOnly MyXamDataGridDependency As DependencyProperty = DependencyProperty.Register("XamMyGrid"GetType(Infragistics.Windows.DataPresenter.XamDataGrid), GetType(MyPersonalControl), New FrameworkPropertyMetadata(AddressOf MyGridChanged))    Public Property XamMyGrid As Infragistics.Windows.DataPresenter.XamDataGrid        Get            Return GetValue(MyXamDataGridDependency)        End Get        Set(value As Infragistics.Windows.DataPresenter.XamDataGrid)            SetValue(MyXamDataGridDependency, value)        End Set    End Property    Public Sub New()        InitializeComponent()    End Sub    Private Shared ReadOnly mClassName As String = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Name    Private Shared Sub MyGridChanged(sender As DependencyObject, e As DependencyPropertyChangedEventArgs)        Dim myUserControl As MyPersonalControl = TryCast(sender, MyPersonalControl)        If myUserControl IsNot Nothing Then            myUserControl.Content.XamMyGrid = e.NewValue        End If    End Sub    bla...    bla...End Class

Ora vorre che nell'utilizzare il mio usercontrol vorrei esporre la mia datagrid così da poterla gestire a mio piacimento sia per il binding che per le varie configurazioni delle colonne ecc. ecc.

Però nel codice vb riesco ad accedere alla mia proprietà XamMyGrid

ma nel codice XAML non riesco ad accedere alla mia datagrid

Il mio obiettivo è ottenere un cose del genere:

 

<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:HHdtTest"        xmlns:MyControl="clr-namespace:MyControl;assembly=MyControl"        x:Class="MainWindow"        mc:Ignorable="d"        Title="MainWindow" Height="350" Width="525">    <Grid>        <MyControl:MyPersonalControl HorizontalAlignment="Left" VerticalAlignment="Top" Height="319" Width="517">            <MyControl:MyPersonalControl.XamMyGrid>                <bla..                <bla..            MyControl:MyPersonalControl.XamMyGrid>        MyControl:MyPersonalControl>    Grid>Window

 

Ho fatto ricerche su internet ma non capisco dove sto sbagliando.

Mi potreste aiutare, vi sarei infinitamente grato.

Vi ringrazio anticipatamente


Viewing all articles
Browse latest Browse all 2212