2017-03-22 7 views
0

は、あなたが以下のListViewがあるとします。C#UWP ToggleSwitchは、リストビューに

<ListView x:Name="ListViewActiveAssets" Margin="10,10,10,10" CanReorderItems="True" AllowDrop="True" CanDragItems="True" SelectionMode="Extended" DragItemsStarting="ListViewActiveAssets_DragItemsStarting" DragItemsCompleted="ListViewActiveAssets_DragItemsCompleted"> 
<ListView.ItemTemplate> 
    <DataTemplate x:DataType="local:Asset"> 
     <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="36" /> 
       <ColumnDefinition Width="36" /> 
       <ColumnDefinition /> 
       <ColumnDefinition /> 
       <ColumnDefinition /> 
       <ColumnDefinition Width="108" /> 
      </Grid.ColumnDefinitions> 

      <TextBlock Text="&#xE700;" FontFamily="Segoe MDL2 Assets" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
      <TextBlock Text="{x:Bind AssetType}" FontFamily="Segoe MDL2 Assets" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
      <TextBlock Text="{x:Bind Name}" Grid.Column="2" FontSize="18" VerticalAlignment="Center" Padding="0,0,5,0"/> 
      <TextBlock Text="{x:Bind StartDate}" Grid.Column="3" FontSize="16" VerticalAlignment="Center" Padding="0,0,5,0"/> 
      <TextBlock Text="{x:Bind EndDate}" Grid.Column="4" FontSize="16" VerticalAlignment="Center" Padding="0,0,5,0"/> 
      <ToggleSwitch Grid.Column="8" x:Name="ToggleSwitchEnable" IsOn="{x:Bind IsEnabledSwitch}" OnContent="On" OffContent="Off" Padding="5,0" Toggled="ToggleSwitchEnable_Toggled"/> 

     </Grid> 
    </DataTemplate> 
</ListView.ItemTemplate> 

このListBoxを並べ替えることができ、この作品の罰金。 ListViewでアイテムを並べ替えると、なぜToggledイベントが発生するのかを知りたいだけですか?

確かに、私のToggledイベントがListViewを更新したコードが含まれているので、I'amがアイテムをドラッグするとき、ListView更新され、ドラッグ&ドロップ&は失敗します。

誰かが提案している場合は...事前に感謝!

+0

を切り替えるたびこれは、リフレッシュコマンドがスキップされますトグルスイッチ。あなたの 'IsEnabledSwitch'は' PropertyChanged'ですか?あなたのコレクションはObservableCollectionですか? – AVK

+0

'IsEnabledSwitch'には' PropertyChanged'がありません。それは 'ObservableCollection'です。 – jfilhoul

答えて

0

てみてください、あなたのクラスでローカルブール値を追加し、あなたのコンストラクタでfalseに設定します。

private bool toggling; 

public myPage() 
{ 
    toggling = false; 
} 

を次に、あなたのOnToggled方法では、真のトグル設定することによって開始し、その後でfalseに戻ってそれを設定しますメソッドの終わり。

あなたはその後、トグルがfalseの場合に実行のみにごリフレッシュ方法を設定することができ
void ToggleSwitchEnable_Toggled(object sender, EventArgs e) 
{ 
    toggling = true; 
    // Your code 
    toggling = false; 
} 

void refresh() 
{ 
    if(toggling) 
     return; 
    //Your code 
} 

あなたはあなたが上の結合しているスイッチ

+0

ちょうど、あなたがドラッグしていても、トグルしていないときにリフレッシュしたくないと思いました。これを達成するには、Toggledメソッドではなく、Toggledメソッドを使用します。DragItemsStartingメソッド – cvanbeek

+0

この問題を回避するための素晴らしいアイデアですが、リストを更新できるトグルスイッチだけではありません。だから私は各イベントでこの変数を有効/無効にする必要があります。 これは、イベントがドラッグ&ドロップでトリガされたときに、スイッチの値が変更されていないためです(これは見知らぬものです)。 – jfilhoul

関連する問題