1

ListViewチェックボックスのみを含む 1 つの列を含むコントロールがあります。これらのチェックボックスにいくつかの名前 (インデックス - 1、2、3 など) を付けることは可能ですか?

ToggleButton_OnCheckedUncheckedイベントで具体的なチェックボックスを何らかの方法で識別したいので、必要です。

<GridViewColumn.CellTemplate>
    <DataTemplate>
        <CheckBox IsChecked="{Binding Value, Mode=OneWay}" IsThreeState="False"
                  Checked="ToggleButton_OnCheckedUnchecked"
                  Unchecked="ToggleButton_OnCheckedUnchecked"/>
    </DataTemplate>
</GridViewColumn.CellTemplate>
4

2 に答える 2

1

そのようにしないでください。代わりに、ListView の各行に IsChecked プロパティを設定し、IsChecked Binding を TwoWay に変更します。そうすれば、Checked および UnChecked イベントをまったく使用する必要がなくなります。

public class LineViewModel
{
   public bool IsChecked
   {
     get { return _isChecked;
   }
   set
   {
   // do something here
   }
}

<GridViewColumn.CellTemplate>
    <DataTemplate>
        <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}" IsThreeState="False"/>
    </DataTemplate>
</GridViewColumn.CellTemplate>

最良の結果を得るには、INotifyPropertyChanged も実装します。

于 2013-07-09T11:39:59.347 に答える
1

Bindingおそらく、いくつかの名前の動的バインディングは、次のように を介して実行できます。

<CheckBox Name="{Binding IdCheckBox}" ... />

MSDNからの引用:

Name のデータ バインディングは技術的には可能ですが、データ バインドされた Name はプロパティの主な目的であるコード ビハインドの識別子接続ポイントを提供できないため、非常にまれなシナリオです。

つまり、Bindingコントロールの Name プロパティは不可能であり、望ましくありません。ただし、次のように、添付された依存関係プロパティを使用できます。

<CheckBox local:GiveName.Name="{Binding Template_Name1}" ... />

いずれにせよ、これは問題の解決策ではありません。

于 2013-07-09T11:54:58.210 に答える