none
Setting a dependencyproperties using a datatrigger RRS feed

  • Domanda

  • Ciao, volevo sapere se è possibie impostare una DependencyProperty tramite il Setter di un Trigger. Come esempio ho usato la proprietà BorderThicnkess della tabella e funziona:

                <Style TargetType="{x:Type DataGrid}" BasedOn="{StaticResource DataGridStyle}" x:Key="DataGridStyleA">
                    <Style.Triggers>
                        <Trigger Property="HasItems" Value="True">
                            <Setter Property="BorderThickness" Value="12"></Setter>
                        </Trigger>
                        <Trigger Property="HasItems" Value="False">
                            <Setter Property="BorderThickness" Value="0"></Setter>
                        </Trigger>
                    </Style.Triggers>
                </Style>
    C'è modo di importare una dependencyProperty o al più, che è quello che mi serve, impostare la proprietà di un altro controllo (presente nello stesso file) ?


    martedì 12 gennaio 2021 13:29

Risposte

  • Salve,

    Puo essere fatto con attached property

    public class Class1 
    {
        public static readonly DependencyProperty MyMouseOverProperty = DependencyProperty.RegisterAttached(
            "MyMouseOver", typeof(bool), typeof(Class1), new FrameworkPropertyMetadata(false, PropertyChangedCallback)
        );
    
        public static void SetMyMouseOver(UIElement element, Boolean value)
        {
            element.SetValue(MyMouseOverProperty, value);
        }
    
        public static bool GetMyMouseOver(UIElement element)
        {
            return (bool)element.GetValue(MyMouseOverProperty);
        }
    
        private static void PropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            // some code here
        }
    }

    Controlla property in DataTemplate IsMouseOver

    <DataTemplate DataType="{x:Type local:Class1}">
            <Canvas x:Name="Canvas_Classe1"
                    Background="Black">
            </Canvas>
            <DataTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="local:Class1.MyMouseOver" Value="True"/>
                </Trigger>
            </DataTemplate.Triggers>
    </DataTemplate>


    Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    venerdì 29 gennaio 2021 06:29
    Moderatore

Tutte le risposte

  • Ciao ziocantante,

    Nota che questo e` il Forum italiano e puoi scrivere dirattamente in ital.

    Facciamo vedere se qualcuno potra` aiutarti.


    Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.


    martedì 12 gennaio 2021 14:25
    Moderatore
  • Grazie, ho tradotto in italiano :)
    martedì 12 gennaio 2021 15:32
  • Ciao zio,

    dal codice che hai condiviso credo che si tratti di un'applicazione WPF, giusto?
    Dovresti pubblicare la domanda nel forum specifico, qui si parla di ASP.NET.

    Ciao


    Paolo Pranzo

    mercoledì 13 gennaio 2021 09:29
  • Salve,

    Puo essere fatto con attached property

    public class Class1 
    {
        public static readonly DependencyProperty MyMouseOverProperty = DependencyProperty.RegisterAttached(
            "MyMouseOver", typeof(bool), typeof(Class1), new FrameworkPropertyMetadata(false, PropertyChangedCallback)
        );
    
        public static void SetMyMouseOver(UIElement element, Boolean value)
        {
            element.SetValue(MyMouseOverProperty, value);
        }
    
        public static bool GetMyMouseOver(UIElement element)
        {
            return (bool)element.GetValue(MyMouseOverProperty);
        }
    
        private static void PropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            // some code here
        }
    }

    Controlla property in DataTemplate IsMouseOver

    <DataTemplate DataType="{x:Type local:Class1}">
            <Canvas x:Name="Canvas_Classe1"
                    Background="Black">
            </Canvas>
            <DataTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="local:Class1.MyMouseOver" Value="True"/>
                </Trigger>
            </DataTemplate.Triggers>
    </DataTemplate>


    Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    venerdì 29 gennaio 2021 06:29
    Moderatore