私はSamsの本 "24時間で自分自身を教える"を使います。ある時点で、著者はリストボックスの選択項目値をプロパティにバインドする方法を示します。私はそれを得る、それはかなり簡単です。しかし、私自身のListBoxItemsで自分自身のListBoxコントロールを作成しようとすると、動作させることができません。WPF ListBox ListBoxItem Binding
作品リストボックスは、そのItemsSourceプロパティとしてシステム収集を使用しています。
<ListBox x:Name="FontList"
DockPanel.Dock="Left"
ItemsSource="{x:Static Fonts.SystemFontFamilies}"
Width="160" />
次のようにこのリストボックスから選択した値は、その後のTextBlockで使用されます。
<TextBlock Text="Test"
FontFamily="{Binding ElementName=FontList, Path=SelectedItem}"
TextWrapping="Wrap"
Margin="0 0 0 4" />
お知らせパスことSelectedItemに設定されます。
今、私は3つの異なるサイズを含む別のListBoxを使ってFontSizeを設定したかったのです。
<ListBox x:Name="Size" >
<ListBoxItem>10</ListBoxItem>
<ListBoxItem>15</ListBoxItem>
<ListBoxItem>20</ListBoxItem>
</ListBox>
そして私は次のようにテキストボックスのサイズ属性にバインドを追加しました::ここに私がやったことある
<TextBlock Text="Test"
FontFamily="{Binding ElementName=FontList, Path=SelectedItem}"
Size="{Binding ElementName=Size, Path=SelectedItem}"
TextWrapping="Wrap"
Margin="0 0 0 4" />
私はプログラムを実行したときのサイズは変更されません。だから、私は、テキスト属性にサイズのために使っていたバインディングを追加しようとしました - その値を参照するために:
<TextBlock Text="{Binding ElementName=Size, Path=SelectedItem}""
FontFamily="{Binding ElementName=FontList, Path=SelectedItem}"
Size="{Binding ElementName=Size, Path=SelectedItem}"
TextWrapping="Wrap"
Margin="0 0 0 4" />
私はサイズのリストボックスをクリックすると、それが変化していることがわかりますが、私もいることがわかり(私は15のエントリをクリックしたとき)のSelectedItemは、このよう表示されます。 System.Windows.Controls.ListBoxItem:15
私の質問: 1)のSelectedItemと呼ばれるパスによって返される実際の値とは何ですか?それは "System.Windows.Controls.ListBoxItem:15"ですか、それとも "15"ですか?それが15でない場合、15を返し、System.Windows.Controls.ListBoxItem:15を返すパスを指定するにはどうすればよいですか?
2)FontFamily SelectItemはなぜ機能しますか?私は、FontListがフォント名のSystemコレクションから来ていることを認識していますが、なぜListBoxがListBoxItemのコレクションをテキストとして返さないのか不明です。 ListBoxのPath参照がListBoxItem型のSelectedItemオブジェクトを返す場合、SelectedItem.Valueのパスなどを使用することができますが、動作しないため、Intellisenseが役に立たなくなります。
私はこの誤解を解消するのに役立つので、この例を取りたいと思います。選択されたサイズのListBoxItemの数値部分だけを渡すPath参照を持つことが全く不可能でない限り、他の方法で動作させるためにソリューションをリファクタリングしないでください。
恐ろしい!ありがとうございました! – Jazimov