2017-11-13 12 views
-2

リストビューのチェックボックスがオンになっているかどうかを確認するにはどうすればよいですか? 行をチェックすると、予算が減少します。行のチェックを外すと、予算が増えます。 私はそれが間違っていることを知っていますが、私はそれを行う方法を知らない。チェックボックスがチェックされているかどうかC#WPF

private void CheckBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     long g; 
     foreach(Player item in lv_player.Items) 
     { 
      g = Convert.ToInt64(item.Value); 
      if (item.IsChecked == false) 
      { 
       budget += g; 
       Team.Add(item); 
      } 
      else 
      { 
       budget -= g; 
       Team.Remove(item); 
      } 
      lab_budget.Content = budget; 
     } 
    } 

XAML

<ListView Name="lv_player" Grid.Column="0" HorizontalAlignment="Left" Height="234" Margin="10,10,0,0" VerticalAlignment="Top" 
         ItemsSource="{Binding}" SelectionMode="Multiple" Width="557"> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn> 
          <GridViewColumn.CellTemplate> 
           <DataTemplate> 
            <CheckBox Selector.SelectionChanged="CheckBox_SelectionChanged" ToggleButton.Unchecked="CheckBox_Unchecked" Checked="CheckBox_Checked" IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/> 
           </DataTemplate> 
          </GridViewColumn.CellTemplate> 
         </GridViewColumn> 
         <GridViewColumn Header="Name" Width="150" DisplayMemberBinding="{Binding Name}"/> 
        </GridView> 
       </ListView.View> 
      </ListView> 

クラスプレーヤー Class Player

+0

質問にソースコードをテキストとして投稿してください。 –

+2

このようにプログラムしました。チェックされていない場合は、予算にgを追加します。それ以外の場合は、予算からgを引きます。おそらく 'if(item.IsChecked == false)'を 'if(item.IsChecked)'に置き換えてください。 – Clemens

答えて

0

チェックボックスが選択されているかどうかあなたはすでにチェックされています。あなたの問題は、コードの単なるバグです。

変更:

if (item.IsChecked == false) 

if (item.IsChecked) 

item.IsChecked

にはBOOL Propertyです。チェックボックスが選択(チェック)されている場合、プロパティは「true」になり、そうでない場合には「false」になります。

冗長コードであるため、「== false」を使用しないようにしてください。 Here is a topic on that.

C#では、booleanは、等価演算子を使用せずに英語で読むことができるように命名されています。

+0

ありがとうございますが、まだ動作しません。何も起こりません。 – Marco

+0

あなたのコードに表示されていない別のバグがある場合を除き、動作します。 – Clay07g

関連する問題