从textchangedevent更新单选按钮方法

时间:2015-03-27 15:30:40

标签: c# wpf radio-button checked textchanged

是否可以通过textChanged方法为文本框调用radiobutton检查方法?我有一组单选按钮,当选择一个单选按钮时,它会调用radiobutton_Checked方法。这会进行计算并将结果保存到名为angle_Offset的变量中。

我有一个文本框,其文本数据绑定到名为Heading的变量。这用于radiobutton_Checked方法中完成的计算。

现在,无论何时选择单选按钮,都会进行计算。如果我更改文本框中的文本,我必须单击另一个单选按钮让它更新angle_Offset计算,但是我试图这样做,以便在文本更改时完成计算而无需选择新的无线电按钮(使用当前的按钮)。

这是xaml:

<TextBox x:Name="Rotate" Text="{Binding ElementName=this, Path=Heading}" TextChanged="textChangedEventHandler" />

<RadioButton Content="0°"  Tag="0" GroupName="display" Checked="radiobutton_Checked"/>
<RadioButton Content="90°" Tag="1" GroupName="display" Checked="radiobutton_Checked"/>
<RadioButton Content="180°" Tag="2" GroupName="display" Checked="radiobutton_Checked"/>
<RadioButton Content="270°" Tag="3" GroupName="display" Checked="radiobutton_Checked"/>

这里有代码:

    private int Heading
    {
        get { return (int)GetValue(update_Heading); }
        set { SetValue(update_Heading, value); }
    }

    public static readonly DependencyProperty update_Heading = DependencyProperty.Register("Heading", typeof(int), typeof(MainWindow), new PropertyMetadata(null));

    public void radiobutton_Checked(object sender, RoutedEventArgs e)
    {
        var rb = (RadioButton)sender;
        var tag = Convert.ToInt32(rb.Tag);
        angle_Offset = (degrees_90 * tag) - Heading;
    }

    private void textChangedEventHandler(object sender, TextChangedEventArgs args)
    {
        //not sure how to call radiobutton_Checked from here
    }

我试图找出一种从textChangedEventHandler调用radiobutton_Checked方法的方法,以便使用&#34; Heading&#34;计算angle_Offest(在无线电检查方法中找到)。变量已更新。由于它们有不同的参数,我无法调用它。

1 个答案:

答案 0 :(得分:1)

您可以在文本框的TextChanged事件上调用单选按钮Checked事件

在你的情况下

public void radiobutton_Checked(object sender, EventArgs e)
    {
        var rb = (RadioButton)sender;
        var tag = Convert.ToInt32(rb.Tag);
        angle_Offset = (degrees_90 * tag) - Heading;
    }

 protected void textbox_TextChanged(object sender, EventArgs e)
    {
        RadioButton rb = .. // get the radiobutton checked
        radiobutton_Checked(rb , null);
    }