これと定義されたオブジェクトのコレクションにバインドされたComboBoxがあります。日付ピッカー: 多くのコントロールのうちの1つだけを別のコントロールの値に基づいて表示させる
public class TierOption
{
public string Option { get; set; }
public Type DataType { get; set; }
}
public class TierOptions : ObservableCollection<Tier1Option>
{
}
私はテキストボックス、コンボボックス、またはWPFToolKitあり、このコンボボックスに関連する3つの他のコントロールを、持っています。
最初のComboBoxで選択されたオブジェクトのデータ型(型)に対応する関連コントロールのみを表示する必要があります。
擬似コード例: (虐殺C#におそらくあまりにも近いがうまくいけば、それはアイデアを伝える)
switch (ComboBox.SelectedItem.DataType)
{
case String:
TextBox.Visibility = Visibility.Visible;
ComboBox.Visibility = Visibility.Hidden;
DatePicker.Visibility = Visibility. Hidden;
break;
case DateTime:
TextBox.Visibility = Visibility.Hidden;
ComboBox.Visibility = Visibility.Hidden;
DatePicker.Visibility = Visibility. Visible;
break;
<...so forth and so on...>
}
私の試みは関係なく、動作しない複雑台無しに見て非常に非WPFをもたらしてきました。私は最高のデザインプラクティスに真剣に取り組んでいます。
ありがとうございました!
+1私はこの考えがトリガーを使用する私の考えよりも優れていると思います。コントロールの量が増えると、トリガーによってコントロールが難しくなります。必要に応じて後でさらに多くのコントロールを追加するのは簡単なので、別のデータテンプレートを使用すると、imhoに行くことができます。 – dowhilefor
これは、最初のComboBoxの各オブジェクトが特定のタイプのものであっても、すべてのオブジェクトがDataTypeを定義するプロパティを持つ同じタイプ(TierOption)である場合に動作するように思えます。私は何かを誤解していますか? – elo
@elo申し訳ありませんが、あなたは正しいです!私はあまりにも速いので、あなたがあなたのリストに入れたオプションのそれぞれのタイプのクラス(TierOptionから継承するクラス)を作らなければなりません。 – Jonas