Frage

ich lerne derzeit, wie die Entwicklung und den Aufbau einer App für Windows Phone 7.

Wenn ein bestimmte Wert wahr ist, muß ich vor einem Textblock einen Textblock, zu der List-Box hinzuzufügen (sagt sein Name ist x:Name="dayTxtBx").

Ich bin derzeit mit

dayListBox.Items.Add(dayTxtBx);

das Textfeld hinzuzufügen.

Jede Hilfe sehr geschätzt!

Danke

War es hilfreich?

Lösung

Das ist ziemlich einfach zu tun, wenn Sie ein Datatemplate und Valueconverter verwenden und vorbei das ganze Objekt in die List-Box (und nicht nur ein String). Angenommen, Sie haben ein Objekt, das aussieht wie:

public class SomeObject: INotifyPropertyChanged
{
    private bool mTestValue;
    public bool TestValue 
    {
        get {return mTestValue;}
        set {mTestValue = value; NotifyPropertyChanged("TestValue");}
    }
    private string mSomeText;
    public string SomeText
    {
        get {return mSomeText;}
        set {mSomeText = value; NotifyPropertyChanged("SomeText");}
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string name)
    {
        if ((name != null) && (PropertyChanged != null))
        {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }
}

Sie können einen Konverter, dass aussieht wie:

public class BooleanVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value != null && (bool)value)
            return Visibility.Visible;
        else
            return Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Und fügen Sie den Konverter an Ihre XAML wie folgt:

<UserControl x:Class="MyProject.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyProject">
    <UserControl.Resources>
        <local:BooleanVisibilityConverter x:Key="BoolVisibilityConverter" />
    <UserControl.Resources>

Dann könnte man die List in XAML wie so definiert hat:

<Listbox>
  <Listbox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orentation="Horizontal" >
        <TextBlock Text="Only Show If Value is True" Visibility={Binding TestValue, Converter={StaticResource BoolVisibilityConverter}} />
        <TextBlock Text="{Binding SomeText}" />
      </StackPanel>
    </DataTemplate>
  </Listbox.ItemTemplate>
</Listbox>

Könnte wie viel scheinen, aber es ist wirklich ziemlich einfach, sobald Sie loslegen. Eine gute Möglichkeit, mehr über Daten zu erfahren, Bindung und Wandler ist bei Jesse Liberty Blog ( http: / /jesseliberty.com/?s=Windows+Phone+From+Scratch ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top