MainWindowクラスに次の依存関係プロパティがあります(WPFのWindowから継承します)
public ObservableCollection<ComputerListItem> ActiveComputers
{
get { return (ObservableCollection<ComputerListItem>)this.GetValue(ActiveComputersProperty); }
set { this.SetValue(ActiveComputersProperty, value); }
}
public static readonly DependencyProperty ActiveComputersProperty = DependencyProperty.Register(
"ActiveComputers", typeof(ObservableCollection<ComputerListItem>), typeof(MainWindow), new PropertyMetadata(new ObservableCollection<ComputerListItem>()));
今、私はラベルに値を与えようとしているActiveComputers.Count
ので、XAMLではこれがあります:
<Window x:Class="ComputerManagerV3.MainWindow"
<!-- SNIP -->
DataContext="{Binding RelativeSource={RelativeSource Self}}"
>
<Grid>
<!--SNIP -->
<Label Name="labelActive" Content="{Binding Source=ActiveComputers, Path=Count}" ></Label>
デザイナーでも、ラベルが現在表示している値は15です。これは、リストが最初に13個の要素で埋められているためです。そこで、いくつかのテストを追加しました。監視可能なコレクションにアイテムがいくつあっても、ラベルには常に値15:/が表示されます。また、出力ウィンドウにバインドエラーが表示されないため、何をすべきかわかりません。
私の質問:
- バインディング式の値が常に15であるのはなぜですか?
- リスト内のアイテムの数が常に表示されるように、正しいバインディングを作成するにはどうすればよいですか?
- 値コンバーターを自分で作成せずにテキストを追加することは可能ですか?