2017-01-04 10 views
0

行をリストビューにロードするときに実行されるコードは、一度だけ発生します。 My ListViewアイテムには2つの値(「x」と「n」)しかありません。私は、値 "x"の項目( "セル")を背景色として赤にします。 次のコードには2つの問題があります: 1)value = "x"の場合は "cell"を持つようにすべての列/項目(goodFH、Positionなど)を指定したくありませんif if if if if現在のセルの値= "x"と赤 ") 2)args.ItemContainer.Background行の背景全体を変更し、私が望む"セル "を変更しないでください!UWP C# - listview change "item"値に応じた背景色(行全体ではない)

private void listViewContentChange(ListViewBase sender, ContainerContentChangingEventArgs args) 
    { 

     if (((Binding.Car)args.Item).GoodFH == "x") 
     { 
      args.ItemContainer.Background = (SolidColorBrush)Application.Current.Resources["Red"]; 
     } 
     else 
     { 
      if (((Binding.Car)args.Item).Position == "x") 
      { 
       args.ItemContainer.Background =(SolidColorBrush)Application.Current.Resources["red"]; 

      } 
     } 
    } 


<DataTemplate x:DataType="data:Car"> 
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> 
        <StackPanel Orientation="Horizontal" Margin="20,20,0,0"> 
         <TextBlock FontSize="18" Text="{x:Bind GoodFH}" HorizontalAlignment="Right" Height="20" Width="158"></TextBlock> 
         <TextBlock FontSize="18" Text="{x:Bind Position }" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock> 
         <TextBlock FontSize="18" Text="{x:Bind PathFHfs}" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock> 
         <TextBlock FontSize="18" Text="{x:Bind PathBHFlSp }" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock> 

ヘルプが必要ですか?質問が理解できることを願っています!

答えて

0

私が知る限り、ItemContainer.Backgroundを設定してcellの背景を変更することはできません。

グリッド内のTextBlockを設定して、グリッドの背景を変更できるようにする必要があります。

また、バインドを使用してグリッドのBackgroundを設定することもできます。 「GoodFH」をBackgroundにバインドするには、IValueConverterを使用できるはずです。例えば

MyValueConverters.csコード:

public object Convert(object value, Type targetType, object parameter, string language) 
{ 
    if (value.ToString() == "x") 
    { 
     return new SolidColorBrush(Colors.Red); 
    } 
    return new SolidColorBrush(Colors.Transparent); 
} 

public object ConvertBack(object value, Type targetType, object parameter, string language) 
{ 
    return value; 
} 

XAMLコード:

<Page.Resources> 
    <local:MyValueConverters x:Key="MyConverter" /> 
</Page.Resources> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <ListView Name="MyListView" ItemsSource="{x:Bind Cars}" ContainerContentChanging="listViewContentChange"> 
     <ListView.ItemTemplate> 
      <DataTemplate x:DataType="local:Car"> 
       <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
        <StackPanel Orientation="Horizontal" Margin="20,20,0,0"> 
         <Grid Background="{x:Bind GoodFH,Converter={StaticResource MyConverter}}"> 
          <TextBlock FontSize="18" Text="{x:Bind GoodFH}" HorizontalAlignment="Right" Height="20" Width="158"></TextBlock> 
         </Grid> 
         <Grid Background="{x:Bind Position,Converter={StaticResource MyConverter}}"> 
          <TextBlock FontSize="18" Text="{x:Bind Position }" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock> 
         </Grid> 
         <TextBlock FontSize="18" Text="{x:Bind PathFHfs}" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock> 
         <TextBlock FontSize="18" Text="{x:Bind PathBHFlSp }" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
</Grid> 
+0

ジェイデンthks。あなたのソリューションは私にとって完璧です! –

関連する問題