0

ユーザーがさまざまなルールを指定して保存し、後でデータに適用できるルール画面を作成しようとしています。ユーザーは、AND OR 条件のルールをグループ化することもできます。私の質問は、これが正しい方法であるかどうかです。ユーザーが削除をクリックすると、その行を削除する必要がありますが、その方法がわかりませんか?

以下は私の XAML です:

<Grid x:Name="LayoutRoot" Background="White" Width="600" Height="200" ShowGridLines="True">
    <Grid.RowDefinitions><RowDefinition Height="30" /></Grid.RowDefinitions>
    <Grid.ColumnDefinitions><ColumnDefinition Width="135"/><ColumnDefinition Width="25"/><ColumnDefinition Width="135"/><ColumnDefinition Width="135"/>
        <ColumnDefinition Width="135"/><ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <telerik:RadComboBox Name="Header" Grid.Row="0" Width="100" HorizontalAlignment="Left">
            <telerik:RadComboBoxItem Content="And" IsSelected="True"></telerik:RadComboBoxItem>
            <telerik:RadComboBoxItem Content="Or"></telerik:RadComboBoxItem>
        </telerik:RadComboBox>
    <telerik:RadButton Content="+" Height="31" HorizontalAlignment="Left" Margin="106,0,0,0" Name="btnAdd" VerticalAlignment="Top" Width="26" Click="btnAdd_Click" />
</Grid>

コードビハインドは次のとおりです。

   private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        var row = new RowDefinition();

        row.Height = new GridLength(30);
        LayoutRoot.RowDefinitions.Add(row);

        var columnCombo = new Telerik.Windows.Controls.RadComboBox() { Width = 100, Height = 30, HorizontalAlignment = HorizontalAlignment.Left };
        columnCombo.Items.Add("Column1");
        columnCombo.Items.Add("Column2");
        columnCombo.Items.Add("Column3");

        var operatorCombo = new Telerik.Windows.Controls.RadComboBox() { Width = 100, Height = 30, HorizontalAlignment = HorizontalAlignment.Left};
        operatorCombo.Items.Add("contains");
        operatorCombo.Items.Add("startsWith");
        operatorCombo.Items.Add("endsWith");

        var btnRemove = new Telerik.Windows.Controls.RadButton() { Width = 20, Height = 30, Content = "X" };
        btnRemove.Click += new RoutedEventHandler(btnRemove_Click);

        var btnGroup = new Telerik.Windows.Controls.RadButton() { Content = "Group", Width = 50, Height = 30 };
        btnGroup.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        btnGroup.Click += new RoutedEventHandler(btnGroup_Click);

        var calendar = new Telerik.Windows.Controls.RadDatePicker();

        LayoutRoot.Children.Add(btnRemove);
        LayoutRoot.Children.Add(btnGroup);
        LayoutRoot.Children.Add(columnCombo);
        LayoutRoot.Children.Add(operatorCombo);
        LayoutRoot.Children.Add(calendar);

        int newrow = LayoutRoot.RowDefinitions.Count-1;

        Grid.SetRow(btnRemove, newrow);
        Grid.SetColumn(btnRemove, 1);
        Grid.SetRow(columnCombo, newrow);
        Grid.SetColumn(columnCombo, 2);
        Grid.SetRow(operatorCombo, newrow);
        Grid.SetColumn(operatorCombo, 3);
        Grid.SetRow(calendar, newrow);
        Grid.SetColumn(calendar, 4);
        Grid.SetRow(btnGroup, newrow);
        Grid.SetColumn(btnGroup, 5);

    }

    public void btnGroup_Click(object sender, RoutedEventArgs e)
    {
        throw new NotImplementedException();
    }

    public void btnRemove_Click(object sender, RoutedEventArgs e)
    {

        //TODO: Here I want to find out from which Gridrow user has clicked & remove that grid row & controls inside it.
    }
4

1 に答える 1

1

Tag各ボタンのプロパティを使用して、削除する行を取得できます。

http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.tag(v=vs.95).aspx

于 2012-08-22T16:03:34.733 に答える