DataTemplate Triggers im Button?(Silverlight)



  • merkwuerdig
    kannst du solch ein trigger in einer einfachen listbox in der selben xaml setzen ?



  • Kein Erfolg.



  • dann stimmt was mit deiner xaml nicht
    zeig ma den header
    DataContext.Triggers gibts doch - wuesste nicht warum er des nicht findet /=



  • <navigation:Page x:Class="WOL.Views.UserView" 
               xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
               xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
               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"
               mc:Ignorable="d"
               xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
    

    Fehlt ne Assambly? Ich dacht die wären im Standard namespace mit drinne.



  • Benutz doch nen Style für den Button der ausgeblendet werden soll und dort setzt du den Trigger rein. Das Datatemplate direkt ist der falsche Ort dafür.

    Außerdem wirst du wahrscheinlich noch nen IValueConverter brauchen um deinen String "sucess" in nen Objekt IPStatus zu konvertieren um die dann im Trigger vergleichen zu können.



  • Hmm gute Idee. Danke 😉



  • wenn du eh n converter schreiben musst - warum dann nicht gleich ein converter von IPStatus -> Boolean ?

    kannst dann direkt ohne style das IsEnabled binden und convertieren

    <Button Content="hochfahren" Click="Button_Click" IsEnabled="{Binding Status, Converter={StaticResource statusToBoolean}}" />



  • Ok ich hab nun ein IValueConverter.

    public class IPStatusConverter : IValueConverter
        {
    
            #region IValueConverter Member
    
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                WOL.SQLDataService.IPStatus status = (WOL.SQLDataService.IPStatus)value;
                if (status == WOL.SQLDataService.IPStatus.Success)
                    return true;
                return false;
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                bool succes = (bool)value;
                if (succes)
                    return WOL.SQLDataService.IPStatus.Success;
                return WOL.SQLDataService.IPStatus.Unknown;
            }
    
            #endregion
        }
    

    Der steht nun in einer Seperaten Klasse,wie krieg ich nun aber auf diese Klasse und den Converter bezug in meiner XAML von meiner einen Page?



  • als resource hinzufuegen

    <page xmlns:converter="...">
        <page.Resources>
            <converter:IPStatusConverter x:Key="ipStatusConverter" />
        </page.Resources>
        <bla bla="{Binding ..., Converter={StaticResoure ipStatusConverter}}" />
    </page>
    

    //tag vergessen



  • Haaa, naklar, hatte nur nich dran gedacht das es als Ressource rein muss.
    Vielen Danke. Hab das erwünschte Ziel erreicht.


Anmelden zum Antworten