ユーザーがデータベースを検索するためにクエリを編集できるWPF UIを作成しようとしています。クエリーはコンボボックスLike Thisから消費者が選択したものに基づいて作成され、新しい条件を追加する場合はボタンをクリックする限り、必要なだけ多くのフィルタを作成できます。WPF - StackPanelから "User Control"子を削除する
私はこのようなユーザーコントロールとコンボボックスのテンプレートを作成しました:
ユーザーコントロールのXAML:
<StackPanel Orientation="Horizontal" >
<Button
Name="DeleteFilter"
HorizontalAlignment="Left"
Margin="5"
Content="-"
Click="DeleteFilter_OnClick">
</Button>
<ComboBox
Text="Property"
x:Name="Property"
Width="100"
DataContext="{StaticResource SomeViewModel}"
ItemsSource="{Binding Properties}"
DisplayMemberPath="Name"
SelectionChanged="Property_OnSelectionChanged"/>
<ComboBox
Text="PropertyOperator"
x:Name="Operator"
ItemsSource="{Binding Operators}"
DisplayMemberPath="Name"
SelectionChanged="Operator_OnSelectionChanged">
</ComboBox>
<TextBox
x:Name="Value"
Text="Value"
TextAlignment="Center"
Width="100"
Margin="5"/>
</StackPanel>
ユーザーがが新しい条件追加]ボタンをクリックするたびに、私はこのイベントを呼び出します。
private void AddFilterButton_OnClick(object sender, RoutedEventArgs e)
{
var conditionUserControl = new ConditionUserControl();
StackPanel.Children.Add(conditionUserControl);
}
すべて正常に動作します。
私の質問:
どのように私はDeleteFilterbutton that exists in the User Control templateをクリックしてから、ユーザーコントロールの子を削除することができます。
StackPanel.Children.Remove(..);
が私のメインウィンドウから子供を削除するが、どのようにユーザーがクリックした子を知っている:
は、私はこれを試してみました。
はどのように:
私はこれをしなかったと機能が動作
ボタンは削除する子を知っていますか? 'StackPanel'は' SelectedItem'を提供しません。あなたが何らかの方法で各子供にボタンを追加したり、選択を処理したりしない限り...あなたは単に最後のものを削除したいですか(https://stackoverflow.com/q/28208686/1997232)? – Sinatrいいえ、ユーザーがクリックした子を削除したいのですが、それは可能ですか?それがポイントです。私はWPFには新しく、私は知りませんこれを可能にする方法...あなたは創造された子供のそれぞれにボタンを追加するという良いアイデアはあると思いますか? –
* "作成した各子供にボタンを追加する" * - それはまったく問題ありません。私はあなたがすでにそれをしていることに気付かなかった。ビジュアルツリーにボタンを含むユーザコントロールを見つけ、そのインスタンスを 'StackPanel'から削除することができます。 – Sinatr