2016-06-14 2 views
0

私はリストビューを持っています。これはタイプバステレンのアイテムをバインドします。 Baustellenには、文字列statusというプロパティもあります。今度はこれらの項目を繰り返していきたいと思います。プロパティのステータスに特定の値がある場合は、内側のStackpanelに特殊な背景色を設定します。 (現在のアイテムに関連付けられたStackPanelへの参照を取得するにはどうすればよいですか?)どうすればいいですか?ここでコード:XAML - リストビューの下位要素にアクセスするには? Windows 10のユニバーサル

   <ListView x:Name="baustellenListView" ItemsSource="{x:Bind Baustellen}" HorizontalAlignment="Center" Grid.Row="1" Grid.ColumnSpan="3" SelectionChanged="baustellenListView_SelectionChanged"> 
       <ListView.ItemTemplate> 
        <DataTemplate x:DataType="data:Baustelle"> 
I MEAN THIS STACKPANEL <StackPanel> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock FontSize="50" Text="{x:Bind auftraggeber.name}"/> 
           <TextBlock FontSize="50" Text=", "/> 
           <TextBlock FontSize="50" Text="{x:Bind auftraggeber.vorname}"/> 
          </StackPanel> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock FontSize="20" Text="{x:Bind strasse}"/> 
           <TextBlock FontSize="20" Text=""> 
            <Run Text=" " /> 
           </TextBlock> 
           <TextBlock FontSize="20" Text="{x:Bind hausnr}"/> 
           <TextBlock FontSize="20" Text=", "/> 
           <TextBlock FontSize="20" Text="{x:Bind ort.plz}"/> 
           <TextBlock FontSize="20" Text="&#160;"/> 
           <TextBlock FontSize="20" Text="{x:Bind ort.name}"/> 
          </StackPanel> 
         </StackPanel> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 

そして、分離コードで:

 for(int i = 0; i < Baustellen.Count; i++) 
     { 
      if(Baustellen.ElementAt(i).status == "Aktuell") 
      { 

      } 
     } 
+0

私はあなたのタグを読んでいない、WPFの答えを与えてそれを削除した、私はwin10マシンで私は構想のポートのために私の構文を持っていることを確認するときに戻る必要があります。 ChangePropertyActionを持つDataTriggerが必要なだけです。 –

+0

Ok thx、wpfコードを再投稿してもらえますか?多分普遍的に機能しているかもしれません。私は明日までこれを解決する必要があります。 – omginput

+0

ああ、撮影は申し訳ありませんが、これについて忘れました。ああ、残念ながら私たちは今でもまだ10歳になったわけではありません。私はUWPだけを家庭からやることができ、一週間中異常に忙しいです。 WPFバージョンの参照を元に戻しますが、UWPでは動作しません。 –

答えて

1

私が正しくあなたを理解してかはわかりません。バインドしている値に基づいてスタックパネルの背景を変更したいですか?それで、データテンプレートコントロールにアクセスする必要はありません。コンバータを作成するだけです。このようなもの。

public class StatusToColorConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     string status = value.ToString(); 

     if (status == "a") 
     { 
      return new SolidColorBrush(Colors.Red); 
     } 

     return new SolidColorBrush(Colors.Blue); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

あなたもそれをあなたのページに含める必要があります。 自分のアプリケーション内に、自分のコンバータが配置されているCustomConvertersFolderというフォルダがあります。

<Window.Resources> 
    <local:StatusToColorConverter x:Key="converter" /> 
</Window.Resources> 

そして最後に結合:

xmlns:converter ="clr-namespace:WpfApplication1.CustomConvertersFolder" 

は今、あなたはあなたの人生を簡素化するために、コンバータを使用することができます。

<ListView x:Name="baustellenListView" ItemsSource="{x:Bind Baustellen}" HorizontalAlignment="Center" Grid.Row="1" Grid.ColumnSpan="3" SelectionChanged="baustellenListView_SelectionChanged"> 
    <ListView.ItemTemplate> 
     <DataTemplate x:DataType="data:Baustelle"> 
      <StackPanel Background="{Binding status, Converter={StaticResource converter}}"> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock FontSize="50" Text="{x:Bind auftraggeber.name}"/> 
        <TextBlock FontSize="50" Text=", "/> 
        <TextBlock FontSize="50" Text="{x:Bind auftraggeber.vorname}"/> 
       </StackPanel> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock FontSize="20" Text="{x:Bind strasse}"/> 
        <TextBlock FontSize="20" Text=""> 
          <Run Text=" " /> 
        </TextBlock> 
        <TextBlock FontSize="20" Text="{x:Bind hausnr}"/> 
        <TextBlock FontSize="20" Text=", "/> 
        <TextBlock FontSize="20" Text="{x:Bind ort.plz}"/> 
        <TextBlock FontSize="20" Text="&#160;"/> 
        <TextBlock FontSize="20" Text="{x:Bind ort.name}"/> 
       </StackPanel> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

希望すると、この問題が解決されます。

関連する問題