私はidとdescriptionを持つアイテムのリストを持っています(必要であれば、代わりにkey-valueコレクションを導入できます)。私が必要とするのは、viewmodel idプロパティにバインドされたコントロールですが、対応するアイテム/ペアの説明が表示されます。私が知っているもっとも近い例は、DisplayMemberPathとSelectedValue/SelectedValuePathを設定するコンボボックスですが、ドロップダウンは必要ありません。 これはSilverlightに組み込まれているコントロールはありますか?Silverlightにこのような組み込みコントロールがありますか?
(もちろん私は1つを自分でコーディングすることができ、それは簡単だし、私もちょうど私が必要とのペアを取得し、それは、単純なテキストブロックへの説明だバインドするためのviewmodelためにいくつかのロジックを置くことができる)
編集:何を説明するために、 funcionality私はシンプルなサンプルクラスをコーディングする必要があります。それは実際に私のニーズを満たすが、私はまだ内蔵コントロールを使用できるかどうかを知りたい。
public class CollectionItemDisplayControl:TextBox
{
public CollectionItemDisplayControl()
{
IsReadOnly = true;
}
public string SelectedID
{
get { return (string)GetValue(SelectedIDProperty); }
set { SetValue(SelectedIDProperty, value); }
}
// Using a DependencyProperty as the backing store for SelectedID. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedIDProperty =
DependencyProperty.Register("SelectedID", typeof(string), typeof(CollectionItemDisplayControl), new PropertyMetadata(new PropertyChangedCallback(OnSelectedIDChangedStatic)));
private static void OnSelectedIDChangedStatic(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
CollectionItemDisplayControl originator = d as CollectionItemDisplayControl;
if (originator != null)
{
originator.OnSelectedIDChanged(e);
}
}
private void OnSelectedIDChanged(DependencyPropertyChangedEventArgs e)
{
string description = String.Empty;
string value = e.NewValue as string;
if (value != null)
{
foreach (var item in _items)
{
if (item.UniqueID == value)
{
description = item.Description;
break;
}
}
}
Text = description;
}
private IDataCollection _viewModel;
public IDataCollection ViewModel
{
get { return _viewModel; }
set
{
_viewModel = value;
if (_viewModel != null)
{
_items = _viewModel.Items;
}
}
}
private ObservableCollection<IUnique> _items = new ObservableCollection<IUnique>();
}
ItemClassには、IDと説明という2つのプロパティがあります。このコントロールをページに配置し、アイテムをバインドし、一方向バインドSelectedIDを配置できます。
編集2:だけでなく、私は動作しませんSelectedIDたDependencyPropertyはそう結合しなかったが、私はすぐにそれを修正します
編集3:最初のスニペットがずさんだったと正常に動作しませんでした私はそれを修正しました。
当時のリストから、適切なIDを持つアイテムを1つだけ表示する必要があります。 ItemsControlは一度にすべてを表示します。 – noaRAVE
私の編集を参照してください:私は私のニーズをより明確に説明しました。 – noaRAVE
私は自分のコントロールを使っています。 – noaRAVE